令人惊讶的是(对我而言),这段代码并没有实现我想要的效果:
fun ByteArray.toHexString() : String {
return this.joinToString("") { it.toString(16) }
}
原来的 Byte
是有符号的,所以你会得到负数的十六进制表示形式,这会导致完全错误的最终结果。
Byte.toString
也不会填充前导零,而在这种情况下您可能需要它。
最简单(不使用额外的库,理想情况下也没有扩展)和最有效的修复方法是什么?
0xFF.toByte().toString(16)
->0xFF.toByte().toString(16)
- Salem0x00
到0xFF
的所有单字节字符串。此页面上的所有变体都产生相同的结果...我在这里漏掉了什么? - RolandByteArray
? - RolandByteArray
,然后使用 BouncyCastle 分别进行哈希和加密。没有加密元素就无法复现(https://pastebin.com/4X1R3TKg)。 - Raphael