HarmonyOS鸿蒙Next中HmacSHA256算法

HarmonyOS鸿蒙Next中HmacSHA256算法

咨询描述:
当前业务需要使用HmacSHA256编码,根据文档开发
[https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-compute-mac-V5#开发步骤](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-compute-mac-V5#开发步骤)

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

附android实现:
```python
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;
}

更多关于HarmonyOS鸿蒙Next中HmacSHA256算法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,HmacSHA256算法是通过Security模块提供的Hmac类来实现的。Hmac类支持多种哈希算法,包括HmacSHA256。使用Hmac类时,需要先创建Hmac实例,并指定算法类型为HmacSHA256。然后,通过init方法初始化密钥,使用update方法添加数据,最后通过doFinal方法生成HmacSHA256哈希值。示例代码如下:

import security from '@ohos.security';

let key = new Uint8Array([0x01, 0x02, 0x03, 0x04]);
let data = new Uint8Array([0x05, 0x06, 0x07, 0x08]);

let hmac = security.Hmac.create('HmacSHA256');
hmac.init(key);
hmac.update(data);
let result = hmac.doFinal();

在HarmonyOS鸿蒙Next中,Hmac类提供了对HmacSHA256算法的完整支持,开发者可以直接使用该接口进行HmacSHA256哈希计算。

更多关于HarmonyOS鸿蒙Next中HmacSHA256算法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,你可以使用HmacSHA256算法来实现消息认证码的计算。以下是使用MessageDigestMac类的基本步骤:

  1. 导入相关类

    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
    
  2. 生成HmacSHA256

    public byte[] generateHmacSHA256(String data, String key) throws NoSuchAlgorithmException, InvalidKeyException {
        Mac mac = Mac.getInstance("HmacSHA256");
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256");
        mac.init(secretKeySpec);
        return mac.doFinal(data.getBytes());
    }
    
  3. 调用方法

    String data = "yourData";
    String key = "yourKey";
    byte[] hmacSha256 = generateHmacSHA256(data, key);
    

该方法返回byte[],你可以将其转换为十六进制字符串或Base64编码以便于存储和传输。

回到顶部