-
-
Save adrianbravo/1233693 to your computer and use it in GitHub Desktop.
var crypto = require('crypto') | |
, key = 'salt_from_the_user_document' | |
, plaintext = 'password' | |
, cipher = crypto.createCipher('aes-256-cbc', key) | |
, decipher = crypto.createDecipher('aes-256-cbc', key); | |
cipher.update(plaintext, 'utf8', 'base64'); | |
var encryptedPassword = cipher.final('base64') | |
decipher.update(encryptedPassword, 'base64', 'utf8'); | |
var decryptedPassword = decipher.final('utf8'); | |
console.log('encrypted :', encryptedPassword); | |
console.log('decrypted :', decryptedPassword); |
copyObj.length = 165
TypeError: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
fix by do not specify the type when decode.
See this Gist for more expansive coding of this: https://gist.github.com/sdeering/7153714
Fixed it so that it works probably when encrypting a string longer than 15 characters: https://gist.github.com/jenrik/766f81a147d61b6a9557
I would not copy this code if I were you. CBC mode requires an IV (Initialization Vector) to initialize the first block of plaintext. This example is extremely broken and insecure. Look for an example that uses an IV and make sure that IV is unique for each time you encrypt something.
TypeError: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
Note: This error appears when the Decrypt function receives other string different to the encrypted string 😄 👊
Source: It just occurred to me
@dkhonig Agree.
If you password is longer than 15 (or so) characters, should be: