import { cryptoFramework } from '@kit.CryptoArchitectureKit';
// 用这个库执行以下代码压测加密出现崩溃
async rpaCrypt(isEncrypt: boolean, data: Uint8Array): Promise<Uint8Array> {
// 生成加解密生成器
if (isEncrypt) {
for (let i = 0; i < 100000; i++) {
let cipherAlgName = 'AES128|GCM|NoPadding';
let mode = isEncrypt ? cryptoFramework.CryptoMode.ENCRYPT_MODE : cryptoFramework.CryptoMode.DECRYPT_MODE;
let globalGcmParams = this.genGcmParamsSpec(this.rpaIv!, this.rpaAad);
let cipher = cryptoFramework.createCipher(cipherAlgName);
cipher!.init(mode, this.rpaCipher, globalGcmParams);
LogUtils.d(this.Tag, 'Encrypt data:' + VKeyUtils.uint8ArrayToHexString(data));
LogUtils.d(this.Tag, 'Encrypt authTag:' + VKeyUtils.uint8ArrayToHexString(this.authTag));
let encryptUpdate = await cipher!.update({ data: data });
console.log(i + '======')
let authTag = await cipher!.doFinal(null)
this.authTag = authTag.data
}
}
return new Uint8Array()
}
先规范变量使用方法this.authTag与let authTag可能会产生作用域问题,可参考使用官方代码示例: