根据以下代码:
const cipher = cryptoFramework.createCipher("AES128|GCM|PKCS7");
const symKey = await genSymKeyByData(key);
const ivBlob: cryptoFramework.DataBlob = { data: new Uint8Array(Array(12).fill(0)) };
const aadBlob: cryptoFramework.DataBlob = { data: new Uint8Array(Array(8).fill(0)) };
const tagBlob: cryptoFramework.DataBlob = { data: new Uint8Array(Array(16).fill(0)) };
let gcmParamsSpec: cryptoFramework.GcmParamsSpec = {
iv: ivBlob,
aad: aadBlob,
// 此处先写成空,下方会重制
authTag: tagBlob,
algName: "GcmParamsSpec",
};
const plainTextBlob: cryptoFramework.DataBlob = { data: plainText };
await cipher.init(
cryptoFramework.CryptoMode.ENCRYPT_MODE,
symKey,
gcmParamsSpec
);
try{
let encryptUpdate = await cipher.update(plainTextBlob);
}catch(e){
console.log(e);
}
// gcm模式加密doFinal时传入空,获得tag数据,并更新至gcmParams对象中。
gcmParamsSpec.authTag = await cipher.doFinal(null);
在cipher.update报错,build context for update fail!
传入的plainText 为音频文件的内容
参考demo: