【HarmonyOS NEXT】AES128加密cryptoFramework接口报错

【关键字】

加密解密 / AES128 / CBC模式

【问题描述】

想使用AES128加密解密,尝试使用三方库 OpenHarmony-SIG/crypto-js

使用固定参数测试,基于CBC模式,PKCS#7填充

key=’01020304050607080102030405060708’

iv=’0102030405060708’

加密字符 Message

使用crypto-js加密结果为:JaAg2cS52DWoAHxqTulzhw==

使用@ohos.security.cryptoFramework 报错:401, convert sym key failed

使用iOS加密结果为:wz2gUboVkhSSGMeyWL6tbw==

AES128加密解密,@ohos.security.cryptoFramework报错的原因是什么呢?为什么crypto-js加密结果会和ios中C代码结果不一样?

【解决方案】

AES128加密,在转化key值symKeyGenerator.convertKey时,symKeyBlob的长度为16,通过stringToUint8Array转化后的长度是32位,因此会报错。

请修改key值为16位字符串。修改后使用相同的key和iv,cryptoFramework和crypto-js结果是相同的。

加密模式是cipher block chaining (CBC)。CBC模式需要一个随机的initialization vector(IV),这就造成了每次加密的结果都不一样。

详细解释可参考如下文章:

https://www.coder.work/article/455765

https://www.zhihu.com/question/546257158/answer/2892137844

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值