gpt4 book ai didi

java - 从字符串到十六进制 MD5 哈希并返回

转载 作者:行者123 更新时间:2023-11-29 07:21:56 27 4
gpt4 key购买 nike

我在 java 中有这个伪代码:

bytes[] hash = MD5.hash("example");

String hexString = toHexString(hash); //This returns something like a0394dbe93f

bytes[] hexBytes = hexString.getBytes("UTF-8");

现在,hexBytes[]hash[] 是不同的。

我知道我做错了什么,因为 hash.length() 是 16 而 hexBytes.length() 是 32。也许它与 java 有关对字符使用 Unicode(这里只是一个疯狂的猜测)。

无论如何,问题是:如何从 hexString 中获取原始的 hash[] 数组。

完整的代码在这里,如果你想看的话(它是 ~ 40 LOC)http://gist.github.com/434466

该代码的输出是:

16
[-24, 32, -69, 74, -70, 90, -41, 76, 90, 111, -15, -84, -95, 102, 65, -10]
32
[101, 56, 50, 48, 98, 98, 52, 97, 98, 97, 53, 97, 100, 55, 52, 99, 53, 97, 54, 102, 102, 49, 97, 99, 97, 49, 54, 54, 52, 49, 102, 54]

非常感谢!

最佳答案

您只是使用 hexString.getBytes("UTF-8"); 获取十六进制字符串的字节,而不是将十六进制数字转换为其字节值。

也就是说,您需要编写与toHexString 函数相反的代码。您的 toHexString 应该确保将低于 10 位的值格式化为 2 位数字,例如字节 9 以“09”而不是“9”结束。

关于java - 从字符串到十六进制 MD5 哈希并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3023122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com