随机生成对称加密密钥:import { cryptoFramework } from '@kit.CryptoArchitectureKit'; function testSyncGenerateAesKey() { // 创建SymKeyGenerator实例 let symKeyGenerator = cryptoFramework.createSymKeyGenerator('AES256'); // 使用密钥生成器随机生成对称密钥 let promiseSymKey = symKeyGenerator.generateSymKeySync(); // 获取对称密钥的二进制数据,输出256位密钥。长度为32字节 let encodedKey = promiseSymKey.getEncoded(); console.info('key hex:' + encodedKey.data); }hmac消息认证码计算:import { cryptoFramework } from '@kit.CryptoArchitectureKit'; import { buffer } from '@kit.ArkTS'; function genSymKeyByData(symKeyData: Uint8Array) { let symKeyBlob: cryptoFramework.DataBlob = { data: symKeyData }; let aesGenerator = cryptoFramework.createSymKeyGenerator('HMAC'); let symKey = aesGenerator.convertKeySync(symKeyBlob); console.info('[Sync]convertKey success'); return symKey; } function doHmacBySync() { // 把字符串按utf-8解码为Uint8Array,使用固定的128位的密钥,即16字节 let keyData = new Uint8Array(buffer.from("xxx", 'utf-8').buffer); let key = genSymKeyByData(keyData); let macAlgName = 'SHA256'; // 摘要算法名 let message = 'hmacTestMessgae'; // 待进行HMAC的数据 let mac = cryptoFramework.createMac(macAlgName); mac.initSync(key); // 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制 mac.updateSync({ data: new Uint8Array(buffer.from(message, 'utf-8').buffer) }); let macResult = mac.doFinalSync(); console.info('[Sync]HMAC result:' + macResult.data); let macLen = mac.getMacLength(); console.info('HMAC len:' + macLen); }参考指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-compute-mac-V5\#hmac%E4%B8%80%E6%AC%A1%E6%80%A7%E4%BC%A0%E5%85%A5
随机生成对称加密密钥:
hmac消息认证码计算:
参考指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-compute-mac-V5\#hmac%E4%B8%80%E6%AC%A1%E6%80%A7%E4%BC%A0%E5%85%A5