【发布时间】:2014-08-19 03:25:16
【问题描述】:
如果我以“GO”语言生成 SHA-256 哈希,与 Java 等效项相比,我会得到一个不同的字节数组。
这是 GO 版本:
fmt.Println(getSha256([]byte("5nonce=5")))
生成的数组如下所示:
41 79 186 235 199 123 95 226 16 59 51 161 112 245 192 50 21 66 180 250 179 109 153 18 233 148 16 237 156 69 163 150]
这个应该在 Java 代码中做同样的事情:
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update("5nonce=5".getBytes());
byte[] digest = md.digest();
但结果是这个字节数组
[41, 79, -70, -21, -57, 123, 95, -30, 16, 59, 51, -95, 112, -11, -64, 50, 21, 66, -76, -6, -77, 109, -103, 18, -23, -108, 16, -19, -100, 69, -93, -106]
为什么它们不同?我需要如何更改 java 版本才能像 Go 版本一样工作?
【问题讨论】: