HarmonyOS @ohos.security.cryptoFramework使用cipher解密失败

加密内容为长度为12个字符长度时,使用cipher解密:const output = await cipher.doFinal(null); 这一步会被 catch,没有error信息。

例子:使用testContent1进行cipher加密,字符长度为12,key为AES256类型,加密解密都可以。

const testContent1 = "aaa_bbb_ccc_"; 
  • 1.

加密后的数据:19D2CF481514BA7C3D08F80D5A8960C35AD01F54DEEC6453AF9B42538FEECF96使用testContent2进行cipher加密,字符长度为16,key为AES256类型,加密可以,解密被catch没有错误信息。

const testContent2 = "aaa_bbb_ccc_ddd_"; 
  • 1.

加密后的数据: 203A2C904532ED37C1F25958895E901B8972477F03049230298ED9FCB2F9CCA7

// 解密代码
const AES256 = 'AES256';
const AES_CBC_INIT = 'AES|CBC|PKCS5';
const IV_PARAMETER_LENGTH = 32;
try {
  let symKeyGenerator = cryptoFramework.createSymKeyGenerator(AES256);
  let skeySpec = await symKeyGenerator.convertKey({ data: aesKey });
  let cipher = cryptoFramework.createCipher(AES_CBC_INIT);
  let ivParameter = content.substring(0, IV_PARAMETER_LENGTH);
  const ivparam: cryptoFramework.IvParamsSpec = {
    algName: "IvParamsSpec",
    iv: {
      data: parseHexStr2Byte(ivParameter)
    }
  };
  await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, skeySpec, ivparam);
  await cipher.update({
    data: parseHexStr2Byte(content.substring(IV_PARAMETER_LENGTH))
  });
  const output = await cipher.doFinal(null);
  const ciphertextBytes = output.data;
  return bufferToString(ciphertextBytes);
} catch (e) {
  LogUtil.error(e);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
HarmonyOS
2024-12-25 16:36:19
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

代码使用错误,使用update之后自己做完dofinal需要将所有的结果拼接起来得到最后的结果,如果数据量较少,建议不使用update直接使用dofinal。这个地方报错是因为使用update解密后正好解密完dofinal里面没有结果导致对空数据做解密。

分享
微博
QQ
微信
回复
2024-12-25 18:46:13
相关问题
import asset from '@ohos.security.asset'报错
3233浏览 • 1回复 待解决
HarmonyOS 使用DES解密,转换 smkey失败
972浏览 • 1回复 待解决
cryptoFramework.Md update 失败报错
2294浏览 • 1回复 待解决
des解密同步方法解密失败
884浏览 • 1回复 待解决
HarmonyOS 3des加解密失败
646浏览 • 1回复 待解决
HarmonyOS解密算法如何使用
810浏览 • 1回复 待解决
HarmonyOS @ohos/protobufjs 使用咨询
1078浏览 • 1回复 待解决
HarmonyOS @ohos/pulltorefresh使用问题
641浏览 • 1回复 待解决