现在,
hexBytes[]
和
hash[]
是不同的。
我知道我在做错了什么,因为
hash.length()
是16岁,而hexBytes.length()
是32。也许它与使用Unicode的Java有关(在这里是一个疯狂的猜测)。
任何问题,问题都将是:如何从
hash[]
.中获取原始
hexString
如果您想查看(〜40 loc),整个代码就在这里。该代码的输出是:
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”。
toHexString
,但是基本上您需要相反的等效物 - 寻找一种称为
fromHexString
或类似的方法。
基本上
String.getBytes()
执行正常编码(在这种情况下,在UTF-8中)。您想有效地decodebyte[]
GetBytes()不解析十六进制字符,而是处理字符编码。换句话说,它不会将“ 0a”变成0x0a,而是变成0x30 0x41,因为这就是字符“ 0”和“ a”的方式。您想要
byte[] data = ...;
String hex = Hex.encodeHexString(data);
...
byte[] decoded = (byte[]) Hex.decode(hex);
在您的功能中,radix ==16.
如果您不想使用库,这是您可以使用我的十六进制解码器的版本来完成的,
Integer.parseInt(String, radix)
Hexmd5('(' + document.login.password.value +'΅ document.sendin.submit();