HarmonyOS AES解密,偶现出错error code:17630001?

代码流程:使用系统cryptoFramework加解密框架,从sqlite数据库getBlob读数据出来解密并展示,偶现doFinal解密出错,概率较大,但是无法必现。

日志:error code:17630001 msg:doFinal failed. data:undefined stack:Cannot get SourceMap info, dump raw stack:

private readonly EN_DE_MODE = "AES128|ECB|PKCS5";
private readonly SYM_ALGORITHM_NAME = "AES128";

async decodeDict(data:Uint8Array, length:number): Promise<string> {
  let symKey = await this.genSymKey();

  // 初始化加解密操作环境
  let mode = cryptoFramework.CryptoMode.DECRYPT_MODE;
  //生成加解密生成器
  this.decryptCipher = cryptoFramework.createCipher(this.EN_DE_MODE);
  //初始化加密
  await this.decryptCipher.init(mode, symKey, null);
  //dict特殊处理
  let target:Uint8Array;
  if (length > 0 && length !== data.length) {
  target = data.slice(0, length);
} else {
  target = data;
}
//拼接需要解密的数据
let decodeObj:cryptoFramework.DataBlob = { data: target };

//解密
let finalOutput = await this.decryptCipher.doFinal(decodeObj);
return buffer.from(finalOutput.data).toString('utf-8');
}
阅读 585
1 个回答

改成使用initSync,doFinalSync

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进