DEV Community

Cover image for Using JavaScript for Secure Encryption in Web Tools
Rashedul Hridoy
Rashedul Hridoy

Posted on

Using JavaScript for Secure Encryption in Web Tools

This is a method developers use to help protect sensitive information in a program from potential attackers. The encryption changes the readable data into a coded format that can only be decoded using the correct key; therefore, it is very paramount in securing information such as passwords, financial details, and personal data.

This becomes very critical in times when data breaches and cyberattacks are very rampant. By encrypting the data, a developer will ensure that no unauthorized party intercepts and reads sensitive information during transmission over networks or while it's stored.

Moreover, encryption protects data integrity since it ensures that the data has not been tampered with or changed, and hence users get to their information with an assurance of accuracy and safety. Apart from protecting data, encryption plays a very important role in regulatory compliance. The vast majority of industries are subject to strict laws about data protection, such as Europe's General Data Protection Regulation or the Health Insurance Portability and Accountability Act in the United States.

These laws and regulations often require sensitive data to be encrypted in order to protect a person's private information from unauthorized access. If this is not implemented, the legal penalties are huge, besides damage to the reputation of an organization.

The general case for this is that encryption forms one of the fundamental tools used in protecting data, retaining users' trust, and satisfying legal requirements—the foundation of modern software development, ensuring information remains secure and private in a world of increasing connectivity.

How I Make a Basic Encryption Tool By JavaScript ?

Check: Click Here

Choose an Encryption Algorithm

Any trivial encryption algorithm will do, for instance, a very basic substitution cipher known as the Caesar Cipher which displaces every letter in the text by a specified number of positions down the alphabet.

Define a Function that Encrypts

This function should have as input the text to be encrypted and the value of the shift, that is, by how many places each letter is to be shifted.

Within the function, change each letter in the text into its corresponding value expressed in ASCII. Add the shift to these ASCII values to get the encrypted characters.

Convert the shifted ASCII values back to form the encrypted text.

Implementing Decryption

Now, create a function that decrypts by doing the exact reverse of what you did for encryption.

Take away the value of the shift from the encrypted characters to get the original text.

Testing the Functions

Try out your 'encrypt' and 'decrypt' functions with many different inputs.

This approach will teach you how to encrypt and decrypt in JavaScript. Even though this is a very simple method, it lays a good foundation to understand more complex techniques in encryption like AES (Advanced Encryption Standard) later.

Here is The Source Code Only JavaScript

// Caesar Cipher Encryption Function
function encryptCaesarCipher(text, shift) {
    const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    let encryptedText = '';

    // Iterate through each character in the text
    for (let i = 0; i < text.length; i++) {
        const char = text[i].toUpperCase();
        const isLetter = alphabet.indexOf(char) !== -1;

        if (isLetter) {
            // Find the index of the character in the alphabet
            const index = (alphabet.indexOf(char) + shift) % 26;
            encryptedText += alphabet[index];
        } else {
            // Append non-alphabetic characters unchanged
            encryptedText += text[i];
        }
    }

    return encryptedText;
}

// Caesar Cipher Decryption Function
function decryptCaesarCipher(text, shift) {
    const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    let decryptedText = '';

    // Iterate through each character in the text
    for (let i = 0; i < text.length; i++) {
        const char = text[i].toUpperCase();
        const isLetter = alphabet.indexOf(char) !== -1;

        if (isLetter) {
            // Find the index of the character in the alphabet
            const index = (alphabet.indexOf(char) - shift + 26) % 26;
            decryptedText += alphabet[index];
        } else {
            // Append non-alphabetic characters unchanged
            decryptedText += text[i];
        }
    }

    return decryptedText;
}

// Example usage
const originalText = "Hello World!";
const shift = 3;

const encrypted = encryptCaesarCipher(originalText, shift);
console.log('Encrypted:', encrypted); // Output: "KHOOR Zruog!"

const decrypted = decryptCaesarCipher(encrypted, shift);
console.log('Decrypted:', decrypted); // Output: "Hello World!"


Enter fullscreen mode Exit fullscreen mode

Top comments (0)