HarmonyOS鸿蒙Next中AES加密的数据跟安卓端加密生成的数据不一样

HarmonyOS鸿蒙Next中AES加密的数据跟安卓端加密生成的数据不一样 因为我们安卓这边的逻辑是这样的,加密之后会把这段加密数据Uint8Array的二进制数组的形式发送给socket服务端,socket服务端会返回一段字节数据,然后再用相同的秘钥去解密这端数据。

然后在鸿蒙端由于加密生成的数据和安卓端不一样,服务端返回的数据就也不一样,然后再用秘钥去解密这段数据执行到cipher.doFinalSync就失败了。

3 回复

不能用二进制数组传输, 因为java端的二进制数组是有符号的 【-】 而鸿蒙端加解密的二进制数组数组是无符号的没有【-】。不能通过数组进行验证 需要将二进制数组转换为base64的字符串传输 并使用base64的字符串进行base.decodeSync()的方法将base64的字符串转换为二进制数组的格式

服务端不方便修改的话,你也可以自己做一层转化

更多关于HarmonyOS鸿蒙Next中AES加密的数据跟安卓端加密生成的数据不一样的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,AES加密生成的数据与安卓端不一致,可能是由于以下原因导致的:

  1. 加密模式和填充方式不同:AES加密支持多种加密模式(如ECB、CBC、GCM等)和填充方式(如PKCS5、PKCS7等)。如果鸿蒙Next和安卓端使用了不同的加密模式或填充方式,生成的密文会不同。

  2. 密钥或初始向量(IV)不同:AES加密需要密钥和初始向量(IV)。如果鸿蒙Next和安卓端使用了不同的密钥或IV,即使相同的明文也会生成不同的密文。

  3. 字符编码不一致:在加密之前,明文字符串需要进行编码(如UTF-8、ASCII等)。如果鸿蒙Next和安卓端使用了不同的编码方式,生成的密文也会不同。

  4. 加密库实现差异:鸿蒙Next和安卓可能使用了不同的加密库或底层实现,导致加密结果存在差异。

  5. 数据预处理不同:在加密前,如果对数据进行了不同的预处理(如Base64编码、数据填充等),也会导致最终密文不一致。

要确保鸿蒙Next和安卓端生成的AES加密数据一致,需确保双方使用相同的加密模式、填充方式、密钥、IV、字符编码以及数据预处理步骤。

在HarmonyOS鸿蒙Next和安卓系统中,虽然都支持AES加密,但由于实现细节、填充模式、密钥管理或编码方式的不同,可能导致加密结果不一致。确保双方使用相同的加密算法、密钥、IV(初始化向量)、填充模式和编码方式(如Base64或Hex)是关键。建议检查加密参数,确保一致后再进行加密和解密操作。

回到顶部