我正在尝试在JS中生成sha3-512哈希,并在golang服务器中对其进行检查。但是,cryptoJS产生的散列与golang不同。
CryptoJS:
CryptoJS.algo.SHA3.create().update("foo").finalize().toString(CryptoJS.enc.Hex)
输出:
1597842aac52bc9d13fe249d808afbf44da13524759477404c3592ee331173e89fe1cbf21a7e4360990d565fad4643cdb209d80fa41a91dea97e665022c92135
golang :
hex.EncodeToString(crypto.SHA3_512.New().Sum([]byte("foo")))
输出:
666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
我希望这些哈希值是相等的,但它们并不相同
最佳答案
显然,您的输出是134宽度,应该是128宽度。
让我们解码您的输出:
bytes, _ := hex.DecodeString("666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26")
fmt.Printf("%s\n", bytes)
我们发现输出是
foo��s̢:��ȵg�Zun�ɂO�XY����G\���:���L��@,:�X������u��(�&
。这意味着您实际上所做的是输出:
“foo” + sha3(“”)
其中sha3_512(“”)是Examples of SHA-3 variants的“a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26”
关于javascript - cryptojs和golang提供不同的sha3哈希值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58260989/