HarmonyOS HmacSHA256算法

当前业务需要使用HmacSHA256编码,根据文档开发

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-compute-mac-V5#开发步骤

发现此算法针对不同文本得到的加密值相同,希望提供有效HmacSHA256编码

附其他系统实现:

public static String hmac(String msg, String secret) {
  String hash = "";
  try {
    Mac sha256mac = Mac.getInstance("HmacSHA256");
    SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(),"HmacSHA256");
    sha256mac.init(secretKey);

    hash = HexUtils.toHexString(sha256mac.doFinal(msg.getBytes()));
  } catch (NoSuchAlgorithmException | InvalidKeyException e) {
    e.printStackTrace();
  }
  return hash;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
HarmonyOS
2024-12-25 09:40:36
818浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

请参考示例如下:

async function calculateHmacSHATest() {
  try {
    let macAlgName = "SHA256";
    let key = "02391723418924666645";
    let keyBytes = stringToUint8Array("abccba");
    let message = "aabbccddee112233ffgghh";
    let dataBytes = stringToUint8Array(message);
    let symKey = await cryptoFramework.createSymKeyGenerator("HMAC").convertKey({ data: keyBytes });
    let mac = cryptoFramework.createMac(macAlgName);
    await mac.init(symKey);
    await mac.update({ data: dataBytes });
    let macOutput = await mac.doFinal();
    let str = uint8ArrayToHexStr(macOutput.data)
    console.info("[ETS HMAC]: result bytes : " + macOutput.data);
    console.info("[ETS HMAC]: result string : " + str);
  } catch (err) {
    console.error(err)
  }
}

// 字符串转成字节流
export function stringToUint8Array(str: string) {
  return new Uint8Array(buffer.from(str, 'utf-8').buffer);
}

//Uint8Array转十六进制
export function uint8ArrayToHexStr(data: Uint8Array): string {
  return buffer.from(data).toString('hex');
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
分享
微博
QQ
微信
回复
2024-12-25 11:27:50
相关问题
加解密HmacSha1 、HmacSha256、aes参考Demo
2817浏览 • 1回复 待解决
HarmonyOS HmacSHA1加签算法实现
1633浏览 • 1回复 待解决
HarmonyOS HmacSHA1 加密算法 参数问题
883浏览 • 1回复 待解决
HarmonyOSHmacSHA1加签算法实现?
641浏览 • 0回复 待解决
ECC算法是否支持secp256r1
1124浏览 • 1回复 待解决
HarmonyOS 如何进行HmacSHA1加密
837浏览 • 1回复 待解决
HarmonyOS 摘要算法问题
557浏览 • 1回复 待解决
HarmonyOS 异或算法
679浏览 • 1回复 待解决
HarmonyOS module的SHA256
893浏览 • 1回复 待解决
HarmonyOS 加解密算法匹配
840浏览 • 1回复 待解决
HarmonyOS 国密算法API
1219浏览 • 0回复 待解决
HarmonyOS AES加密算法demo
942浏览 • 1回复 待解决
HarmonyOS RSA算法如何使用
793浏览 • 1回复 待解决
HarmonyOS 是否有类似drawBitmapMesh的算法
1101浏览 • 1回复 待解决
HarmonyOS 加解密算法如何使用
783浏览 • 1回复 待解决
HarmonyOS RSA加密算法实现
1011浏览 • 1回复 待解决
HarmonyOS 有提供hs256签名的能力吗
565浏览 • 1回复 待解决
HarmonyOS MD5加密算法demo
921浏览 • 1回复 待解决