HarmonyOS 鸿蒙Next hmac|sha1的计算怎么和java的输出不一样,java有负数,arkts都是正数
HarmonyOS 鸿蒙Next hmac|sha1的计算怎么和java的输出不一样,java有负数,arkts都是正数 鸿蒙的hmac和java的输出不一样
String type = "HmacSHA1";
SecretKeySpec secret = new SecretKeySpec("01234567890123456789".getBytes(), type);
try {
Mac mac = Mac.getInstance(type);
mac.init(secret);
return mac.doFinal("1234");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}
更多关于HarmonyOS 鸿蒙Next hmac|sha1的计算怎么和java的输出不一样,java有负数,arkts都是正数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
虽然我不是很懂,但是uint8array不都是正数的吗,
更多关于HarmonyOS 鸿蒙Next hmac|sha1的计算怎么和java的输出不一样,java有负数,arkts都是正数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,对于hmac|sha1的计算结果与Java输出不一致的问题,特别是注意到Java输出包含负数而ArkTS(ArkUI的TypeScript版本,用于构建鸿蒙应用界面)输出都是正数,这通常是由于数据类型和表示方式的不同导致的。
Java中,哈希值通常以字节数组(byte[])形式存在,当这些字节被转换为整数(int)进行显示时,由于字节是有符号的(-128到127),因此可能会看到负数。这是因为Java中的byte类型是有符号的,当高位为1时,该字节被视为负数。
而在ArkTS或其他鸿蒙原生开发环境中,可能使用了无符号整数表示或进行了特殊处理,以确保所有值都是非负的。这种差异在处理哈希值时尤为明显,因为哈希值本质上是一系列字节,其解释方式(有符号或无符号)会直接影响最终显示的数值。
为了解决这个问题,你需要确保在比较两者输出时,采用相同的数值表示方式。例如,在Java中,你可以将字节数组转换为十六进制字符串进行比较,或者在鸿蒙环境中找到相应的方法来处理字节为有符号或无符号的情况。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,