IT虾米网

javascript之加密js从base64解密

ailin888 2024年02月06日 程序员 21 0

我正在处理 cryptojs 并想尝试使用 aes 的简单示例

var encrypted = CryptoJS.AES.encrypt("TEST_TEXT", '9021D105A446', { 
  mode: CryptoJS.mode.ECB, 
  padding: CryptoJS.pad.Pkcs7 
}); 
 
var decrypt = CryptoJS.AES.decrypt(encrypted, '9021D105A446', { 
    mode: CryptoJS.mode.ECB, 
    padding: CryptoJS.pad.Pkcs7 
}); 
console.log(decrypt.toString(CryptoJS.enc.Utf8));//Yeah! TEST_TEXT output as expected 

现在我尝试使用base64加密,但没有按预期输出

 var encryptedText = encrypted.ciphertext.toString(CryptoJS.enc.Base64) 
 var encrypted2 = CryptoJS.enc.Base64.parse(encryptedText); 
 var decrypt2 = CryptoJS.AES.decrypt(encrypted2, '9021D105A446', { 
     mode: CryptoJS.mode.ECB, 
    padding: CryptoJS.pad.Pkcs7 
   }); 
console.log(decrypt2.toString(CryptoJS.enc.Utf8));// Ops! empty output 

您知道第二个示例中的解密出了问题吗?

另一个问题,每次我运行示例 1 时,encryptedText 都与之前的运行有所不同。这是正常行为吗?

fiddle 更新:https://jsfiddle.net/n6wL9a40/

请您参考如下方法:

您不需要将加密值转换为 base64encrypted.toString() 返回 base64 值。

var base64Value = encrypted.toString(); 
// base64Value is U2FsdGVkX19s42BDpx8A9I265vm+zGKSk8nEbQwNjfw= 
var encryptedText = CryptoJS.enc.Base64.parse(base64Value) 
var encrypted2 = encryptedText.toString(CryptoJS.enc.Base64); 
var decrypt2 = CryptoJS.AES.decrypt(encrypted2, '9021D105A446', { 
 mode: CryptoJS.mode.ECB, 
 padding: CryptoJS.pad.Pkcs7 
}); 
 
console.log(decrypt2.toString(CryptoJS.enc.Utf8));// TEST_TEXT 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!