E2E Encryption Example
by henser
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
JavaScript
const secretKey = 'test';
/* const data = 'Hey Noah! 👋'; */
const salt = 'gettingsaltyfoo!';
const hash = CryptoJS.SHA256(salt);
const key = CryptoJS.PBKDF2(secretKey, hash, {
keySize: 256 / 32,
iterations: 1000
});
console.log("Hash :", hash.toString(CryptoJS.enc.Base64));
console.log("Key :", key.toString(CryptoJS.enc.Base64));
// Generate a random IV
const iv = CryptoJS.lib.WordArray.random(128 / 8);
console.log("IV :", iv.toString(CryptoJS.enc.Base64));
const encrypt = input => {
// Encrypt message into base64
const encrypted = CryptoJS.AES.encrypt(input, key, {
iv
});
return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
};
const decrypt = input => {
try {
// Decrypt base64 into message again
const cipherParams = CryptoJS.lib.CipherParams.create({
ciphertext: CryptoJS.enc.Base64.parse(input)
});
return CryptoJS.AES.decrypt(cipherParams, key, {
iv: iv
}).toString(CryptoJS.enc.Utf8);
} catch (e) {
console.log(e);
}
};
const encrypted = encrypt('test');
/* const encrypted = 'LfII/4SvgSgPA0PiHRxEukTupN25M9W6TbPXWYp4298='; */
console.log('encrypted:', encrypted);
document.body.innerText += `Encrypted:\n${encrypted}\n\n`;
const decrypted = decrypt(encrypted);
console.log('decrypted:', decrypted);
document.body.innerText += `Decrypted:\n${decrypted}\n\n`;