Last active
December 20, 2021 01:13
-
-
Save bbengfort/5807825 to your computer and use it in GitHub Desktop.
Encrypting and decrypting aes128 ciphers with an initialization vector in node.js.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var crypto = require('crypto'); | |
var secret = crypto.randomBytes(24); | |
function encrypt(plaintext) { | |
var cipher = crypto.createCipher('aes-256-cbc', secret); | |
cipher.setAutoPadding(false); | |
var ciphertext = ''; | |
for (var i=0; i < plaintext.length; i+=16) { | |
ciphertext += cipher.update(plaintext.substr(i, i+16), 'utf8', 'base64'); | |
} | |
return ciphertext.toString('base64'); | |
} | |
function decrypt(ciphertext) { | |
var decipher = crypto.createDecipher('aes-256-cbc', secret); | |
decipher.setAutoPadding(false); | |
var plaintext = decipher.update(ciphertext, 'base64', 'utf8'); | |
return plaintext.toString('utf8'); | |
} | |
var ciphertext = encrypt(new Buffer("The secret crow ate the pie of the bear.").toString('utf8')); | |
console.log("Cipher text is: " + ciphertext); | |
console.log("Plain text is: " + decrypt(ciphertext)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var crypto = require('crypto'); | |
var secret = crypto.randomBytes(16), | |
cipher = crypto.createCipheriv("aes128", secret, secret), | |
decipher = crypto.createDecipheriv("aes128", secret,secret); | |
cipher.setAutoPadding(false); | |
decipher.setAutoPadding(false); | |
var plaintext = "This is my super secret password"; | |
var ciphertext = cipher.update(plaintext); | |
console.log("Cipher text is:"); | |
console.log(ciphertext.toString()); | |
var deciphertext = decipher.update(ciphertext); | |
console.log(""); | |
console.log("Deciphered text is:"); | |
console.log(deciphertext.toString()); |
wonderful ,, but why the setAutoPadding() is "False".. Please enable it...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I wonder, would this be usable for generating an Ethereum wallet address / account?