我寫了一個函數來加密或解密一個單詞。 爲什麼解密的密鑰與加密的密鑰不一樣?爲什麼解密的密鑰與加密密鑰不一樣?
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
沒有因爲有一個回報,所以只有一個值。 –