HarmonyOS 鸿蒙Next 字符串计算SHA256摘要,需要将摘要数据转换16进制字符串

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 字符串计算SHA256摘要,需要将摘要数据转换16进制字符串

字符串计算SHA256摘要,需要将摘要数据转换16进制字符串
代码:
setMode(mode: string) {
let plainText: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(mode, ‘utf-8’).buffer) };
let md = cryptoFramework.createMd(“SHA256”);
md.update(plainText, (err) => {
md.digest((err, digestOutput) => {
// 怎么将digestOutput.data 转换成 16进制字符串
console.log(“mode”, digestOutput.data)
})
})
}

2 回复
转16进制 伙伴可以尝试使用buff 对uint8array 转码为hex 十六进制
setMode(mode: string) {
  let plainText: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(mode, 'utf-8').buffer) };
  let md = cryptoFramework.createMd("SHA256");
  md.update(plainText, (err) => {
    md.digest((err, digestOutput) => {
      // 怎么将digestOutput.data 转换成 16进制字符串
      (buffer.isEncoding('hex').toString()
      console.log("mode", digestOutput.data)
    })
  })

在HarmonyOS鸿蒙Next系统中,计算字符串的SHA256摘要并将其转换为16进制字符串,可以使用Java的内置库或者C#(如果你使用的是.NET环境)来实现。以下是基于Java的实现方法:

  1. 引入必要的库:

    import java.nio.charset.StandardCharsets;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.math.BigInteger;
    
  2. 实现SHA256摘要并转换为16进制字符串:

    public static String sha256Hex(String input) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(input.getBytes(StandardCharsets.UTF_8));
            StringBuilder hexString = new StringBuilder();
            for (byte b : hash) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) hexString.append('0');
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
    

调用sha256Hex方法并传入你的字符串即可得到SHA256的16进制表示。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部