Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

3年前关闭。



Improve this question




我面对go SHA3-256函数的奇怪结果:
这是source code
import (
    "golang.org/x/crypto/sha3"
    "encoding/hex"
)

func main() {
    pub, _ := hex.DecodeString("c342dbf7cdd3096c4c3910c511a57049e62847dd5030c7e644bc855acc1fd626")
    h := sha3.Sum256(pub[:])
    fmt.Printf("SHA3 %x\n", h)
    // expected: b32562e67d3ea44ba1367ce134caac49fd305b24cde6716ad3857ac682576379
    // received: 8a3ccc097f854811f4c49346da9c3bd1745d087ed539fa7817960f3e0ed8a44f
}

我在几个在线转换器上验证了结果,它们都给出了与我不同的相同结果。

最佳答案

您假设已测试的在线转换器执行十六进制解码。他们没有;它们只是采用ASCII / UTF-8 /字符串的任何值并使用该值,即,它们对文本进行哈希处理。

通过输入c342...字符串然后输入hello可以很容易地观察到这一点。两者都可以使用,而hello显然不包含十六进制。另一种方法是从大写的C而不是c开始,这也将返回不同的结果,而十六进制解码应返回相同的字节数组,从而返回哈希值。

一个小型Java应用程序确实可以确认您的价值:

8a3ccc097f854811f4c49346da9c3bd1745d087ed539fa7817960f3e0ed8a44f

请注意,大多数(如果不是全部)在线工具基本上都是业余密码学家的业余爱好项目。期望实现过程中出现各种编码/解码问题,错误和不确定性。如果要测试实现,请使用官方的NIST测试向量。

关于go - 去郎SHA3-256提供无效的输出? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46255506/

10-10 21:31