【发布时间】:2014-05-31 10:34:47
【问题描述】:
我使用此代码加密/解密字符串值
var crypto = require('crypto');
function encrypt(text){
var cipher = crypto.createCipher('aes-256-cbc','secret key');
var encrypted = cipher.update(text.toString(),'utf8','hex') + cipher.final('hex');
return encrypted;
}
function decrypt(text){
var decipher = crypto.createDecipher('aes-256-cbc','secret key');
var decrypted = decipher.update(text.toString(),'hex','utf8') + decipher.final('utf8');
return decrypted ;
}
module.exports.encrypt = encrypt;
module.exports.decrypt = decrypt;
当我尝试解密未加密的东西时,例如解密('test')它会抛出以下错误:
crypto.js:292
var ret = this._binding.final();
^
TypeError: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
at Decipher.Cipher.final (crypto.js:292:27)
我也尝试使用缓冲区但没有成功,但在 Internet 上找不到任何解决方案。
真正的问题是我用它来解密 cookie 值。如果黑客创建了一个值为“test”的虚假 cookie,它将使我的程序崩溃。
【问题讨论】:
-
但是你期待什么结果?
-
问题是我需要解密 cookie 数据。如果有人注入带有值 test 的 cookie,那么我将尝试解密“test”
-
感谢这个技巧,如果有其他解决方案,会打开它。
标签: node.js encryption cryptography