代码流程:使用系统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');
}
改成使用initSync,doFinalSync