我写了一个函数来加密或解密一个单词。 为什么解密的密钥与加密的密钥不一样?为什么解密的密钥与加密密钥不一样?
function cryptage(action, password) {
var method = "AES-256-CBC";
if (action == "encrypt") {
var cipher = crypto.createCipher(method, password)
var crypted = cipher.update(password, 'utf8', 'hex')
crypted += cipher.final('hex');
return crypted;
} else if (action == "decrypt") {
var decipher = crypto.createDecipher(method, password)
decipher.setAutoPadding(false);
var decrypted = decipher.update(password, 'hex', 'utf8')
decrypted += decipher.final('utf8');
return decrypted;
}
}
当我打电话var crypted = cryptage("encrypt", "test")
,它返回
cc1fbd73cb93106c3358636ff619bdbd
当我打电话cryptage("decrypt", crypted)
,它正好返回
特〜IӠ〜{} m
但没有文字,为什么?
我没有审查所有的代码,但如果该函数的第二个参数是'password'你提供不同的值,它永远不能工作 – pedrofb
为了“加密”的东西,你需要一个*秘密*(如密码)和一个明文。你的算法只接受一个值。这*不*是加密,它是一个*编码*最好。 – deceze
没有因为有一个回报,所以只有一个值。 –