HarmonyOS鸿蒙Next中crypto-js的AES加密有问题,解密出来不是加密的内容

HarmonyOS鸿蒙Next中crypto-js的AES加密有问题,解密出来不是加密的内容

function testAESDecrypt() {
let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Hex.parse('48656c6c6f576f726c6421'), CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f'), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.NoPadding });
let decrypted = CryptoJS.AES.decrypt(encrypted, CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f'), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.NoPadding });
setResult('testAESDecrypt result: ' + decrypted.toString());
}

解密出来的内容不是加密前的内容


更多关于HarmonyOS鸿蒙Next中crypto-js的AES加密有问题,解密出来不是加密的内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

demo里的padding: NoPadding 改成padding: CryptoJS.pad.Pkcs7就可以了

更多关于HarmonyOS鸿蒙Next中crypto-js的AES加密有问题,解密出来不是加密的内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用crypto-js进行AES加密后解密结果不一致,可能是以下原因:

  1. 密钥或IV不一致:AES加密和解密需要使用相同的密钥和初始化向量(IV),确保两者在加密和解密时完全一致。

  2. 加密模式或填充方式不匹配:AES支持多种加密模式和填充方式,如CBC、ECB、PKCS7等,确保加密和解密时使用相同的模式和填充方式。

  3. 编码问题:加密前的数据和解密后的数据可能涉及不同的编码方式,如UTF-8、Base64等,确保编码方式一致。

  4. crypto-js版本问题:不同版本的crypto-js可能存在行为差异,确保使用的版本兼容HarmonyOS鸿蒙Next。

检查以上几点,确保加密和解密过程中的参数和方式完全一致,以解决解密结果不一致的问题。

在HarmonyOS鸿蒙Next中使用crypto-js进行AES加密时,如果解密结果不正确,可能的原因包括:密钥不匹配、加密模式或填充方式错误、以及编码问题。确保加密和解密使用相同的密钥、模式和填充方式(如AES-256-CBC和PKCS7)。同时,检查数据在加密和解密过程中的编码是否一致(如Base64或Hex)。如果问题仍未解决,考虑使用HarmonyOS提供的加密API进行替代。

回到顶部