HarmonyOS 鸿蒙Next SM3摘要转为string乱码

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

HarmonyOS 鸿蒙Next SM3摘要转为string乱码

对字符串进行sm3摘要计算,代码如下
let mdAlgName = ‘SM3’; // 摘要算法名
let md = cryptoFramework.createMd(mdAlgName);
// 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
await md.update({ data: new Uint8Array(buffer.from(‘dhweiuhdkjwhdjkhwqhdjw’, ‘utf-8’).buffer) });
let mdResult = await md.digest();
Logger.info(‘sm3 摘要结果:’ + mdResult.data);

1、使用如下方法将mdResult.data转化为string乱码
let textDecoder = util.TextDecoder.create(“utf-8”);
let str = textDecoder.decodeWithStream(mdResult.data, { stream: false })

2、使用如下方法转化正常
mdResult.data.forEach((value: number) => {
 hexString += value.toString(16).padStart(2, ‘0’)
})

 

2 回复

在HarmonyOS鸿蒙系统中,当你遇到将Next SM3摘要转为字符串时出现乱码的问题,这通常与编码方式或字符集处理不当有关。Next SM3是一种哈希算法,其输出是固定长度的二进制数据。将这些二进制数据转换为可读的字符串时,需要选择合适的编码方式。

常见的问题可能包括:

  1. 编码方式不匹配:确保在将二进制数据转换为字符串时,使用的编码方式与原始数据的编码方式一致。例如,如果原始数据是以UTF-8编码的,那么在转换时也应使用UTF-8。

  2. 字节顺序问题:某些情况下,字节顺序(大端或小端)可能影响最终的字符串表示。检查并确保字节顺序在转换前后保持一致。

  3. 字符集限制:某些字符集可能不支持所有可能的字节值,这可能导致乱码。尝试使用更广泛的字符集,如UTF-8,它几乎可以表示所有可能的字符。

针对上述问题,你可以尝试调整编码方式或字符集设置,以确保正确地将Next SM3摘要转换为字符串。

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

回到顶部