HarmonyOS HmacSHA1加签算法实现

kotlin:

fun genHMAC(data: ByteArray, key: ByteArray): ByteArray? { 
  var result: ByteArray? = null 
  try { 
  //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 
  val signinKey = SecretKeySpec(key, "HmacSHA1") 
  //生成一个指定 Mac 算法 的 Mac 对象 
  val mac: Mac = Mac.getInstance("HmacSHA1") 
  //用给定密钥初始化 Mac 对象 
  mac.init(signinKey) 
  //完成 Mac 操作 
  val rawHmac: ByteArray = mac.doFinal(data) 
  result = bytesToHexStr(rawHmac).toByteArray() 
} catch (e: NoSuchAlgorithmException) { 
  e.printStackTrace() 
} catch (e: InvalidKeyException) { 
  e.printStackTrace() 
} 
return result 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

HMAC-SHA1 签名生成时java版本与ArkTS版本生成的结果不一致,请问下ArkTS版本这里如何使用HMAC-SHA1 签名

HarmonyOS
2024-08-13 15:23:50
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

参考代码如下:

async function calculateHmacSHA1Test() { 
  try { 
    let macAlgName = "SHA1"; //SHA256 
    let key = "12345xxxxxcdefgh"; 
    key = "dshsja1234561xxxxxmdda12d1s"; 
    let keyBytes = stringToUint8Array(key); 
    console.info("[ETS HMAC]: key bytes : " + keyBytes); 
    let message = "hmacTestMessgae"; 
    let dataBytes = stringToUint8Array(message); 
    console.info("[ETS HMAC]: message bytes : " + dataBytes); 
    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); 
} 
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-08-13 21:48:21


相关问题
HarmonyOSHmacSHA1算法实现
645浏览 • 0回复 待解决
HarmonyOS HmacSHA1 加密算法 参数问题
898浏览 • 1回复 待解决
HarmonyOS 如何进行HmacSHA1加密
847浏览 • 1回复 待解决
加解密HmacSha1HmacSha256、aes参考Demo
2826浏览 • 1回复 待解决
HarmonyOS SM2SM3摘要算法使用
1372浏览 • 1回复 待解决
HarmonyOS HmacSHA256算法
921浏览 • 1回复 待解决
签名验算法不支持RSA|PKCS8|SHA1
1148浏览 • 1回复 待解决
能否提供下HarmonyOS对应的RSA方法?
1231浏览 • 1回复 待解决
关于私钥SHA256方法
937浏览 • 1回复 待解决
HarmonyOS SM2返回Base64字符串
966浏览 • 1回复 待解决
ECC算法是否支持secp256r1
1124浏览 • 1回复 待解决
HarmonyOS RSA加密算法实现
1049浏览 • 1回复 待解决
HarmonyOS UI组件需要阴影要怎么实现
727浏览 • 1回复 待解决
HarmonyOS tab组件的页该怎么实现
673浏览 • 1回复 待解决