Geek Culture
Published in

Geek Culture

Encrypt and Decrypt in NodeJS

How to encrypt text

Create a file named encdec.js and paste:

const crypto = require("crypto")const encrypt = (plainText, password) => {
try {
const iv = crypto.randomBytes(16);
const key = crypto.createHash('sha256').update(password).digest('base64').substr(0, 32);
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
let encrypted = cipher.update(plainText);
encrypted = Buffer.concat([encrypted, cipher.final()])
return iv.toString('hex') + ':' + encrypted.toString('hex');
} catch (error) {
console.log(error);
}
}

Let’s test it:

Append these lines:

const encrypt = (plainText, password) => {
...
}
const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);

Then run:

node encdec.js# Output:
encrypted text af9efafd353a5a7e27f31262dac12d6b:eb1dd75ea6c84e25300d5a244138ab3c

How to decrypt the encrypted text

Add the decryption function:

const decrypt = (encryptedText, password) => {
try {
const textParts = encryptedText.split(':');
const iv = Buffer.from(textParts.shift(), 'hex');
const encryptedData = Buffer.from(textParts.join(':'), 'hex');
const key = crypto.createHash('sha256').update(password).digest('base64').substr(0, 32);
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);

const decrypted = decipher.update(encryptedData);
const decryptedText = Buffer.concat([decrypted, decipher.final()]);
return decryptedText.toString();
} catch (error) {
console.log(error)
}
}

And a test:

const text = "Hello World"
const pass = "secret1234"
const encText = encrypt(text, pass)
console.log('encrypted text', encText);
const decText = decrypt(encText, pass)
console.log('decrypted text', decText);

Then run :

node encdec.js# Output
encrypted text 71596b9f5a99532f438fc5669b845680:248f6cb24a4ebeb174bbb73953115fd5
decrypted text Hello World

Source: https://gist.github.com/vlucas/2bd40f62d20c1d49237a109d491974eb

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store