【发布时间】:2020-12-28 06:28:42
【问题描述】:
我有十六进制形式的字符串 hash(“e6fb06210fafc02fd7479ddbed2d042cc3a5155e”),我想将它与 crypt.digest() 进行比较。 一种效果很好的方法是将 crypt.digest() 转换为十六进制,但我想避免多次转换,而是将哈希从十六进制形式(上图)转换为字节数组。
我尝试的是:
byte[] hashBytes = new BigInteger(hash, 16).toByteArray();
但它与 crypt.digest() 不匹配。当我将 hashBytes 转换回十六进制时,我得到“00e6fb06210fafc02fd7479ddbed2d042cc3a5155e”。
前导零似乎是我无法匹配字节数组的原因。为什么会出现?如何使用 crypt.digest() 和 toByteArray 获得相同的结果?
【问题讨论】:
-
请注意,有一个关于重复主题的惯用线程:Convert a string representation of a hex dump to a byte array using Java?。以防万一您需要解决方案并且不想等待解决您的方法。
-
查看链接线程中的following answer,评论部分。它解释了它。
-
感谢您的快速回答!它帮助我理解了原因并找到了解决方案(虽然我在寻找解决方案时看到了线程)。