在HarmonyOS鸿蒙Next的CryptoFramework中,打印Md的digest接口返回结果为乱码
在HarmonyOS鸿蒙Next的CryptoFramework中,打印Md的digest接口返回结果为乱码 在CryptoFramework中,打印Md的digest接口返回结果显示为乱码,无法识别。
3 回复
digest接口返回的Md计算结果DataBlob是Uint8Array类型,需要转成十六进制字符串再打印,也可以用网页在线版MD5加密工具验证结果。
更多关于在HarmonyOS鸿蒙Next的CryptoFramework中,打印Md的digest接口返回结果为乱码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS的CryptoFramework中,Md的digest接口返回的结果是二进制数据,通常以字节数组的形式呈现。如果你直接尝试打印这些字节数组,可能会出现乱码,因为控制台或日志系统默认将这些字节解释为字符编码(如UTF-8)。要正确显示digest的结果,你应该将这些字节转换为十六进制字符串或其他可读的格式。
例如,你可以使用以下代码将digest返回的字节数组转换为十六进制字符串:
const md = cryptoFramework.createMd("SHA256");
md.update(data);
md.digest().then(digest => {
const hexString = Array.from(digest).map(byte => byte.toString(16).padStart(2, '0')).join('');
console.log(hexString);
});
这样,打印的结果将是digest的十六进制表示,不会出现乱码。
在HarmonyOS鸿蒙Next的CryptoFramework中,Md.digest接口返回的是二进制数据,直接打印可能会显示为乱码。建议将结果转换为十六进制或Base64格式后再打印。例如:
byte[] digest = md.digest();
String hexDigest = bytesToHex(digest); // 自定义bytesToHex方法
System.out.println(hexDigest);

