2 回答
TA贡献1847条经验 获得超7个赞
我不知道你用的是谁的 sha3 包。这是我通过这段代码得到的结果:
package main
import (
"fmt"
"golang.org/x/crypto/sha3"
)
func main() {
h := sha3.New512()
h.Write([]byte("foo"))
sum := h.Sum(nil)
fmt.Printf("hash = %x\n", sum)
}
hash = 4bca2b137edc580fe50a88983ef860ebaca36c857b1f492839d6d7392452a63c82cbebc68e3b70a2a1480b4bb5d437a7cba6ecf9d89f9ff3ccd14cd6146ea7e7
与Python3比较:
>>> import hashlib
>>> print(hashlib.sha3_512(b"foo").hexdigest())
打印:
4bca2b137edc580fe50a88983ef860ebaca36c857b1f492839d6d7392452a63c82cbebc68e3b70a2a1480b4bb5d437a7cba6ecf9d89f9ff3ccd14cd6146ea7e7
TA贡献1812条经验 获得超5个赞
显然,您的输出是 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("") 是 "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e30175 8586281dcd26”来自SHA-3 变体示例。
- 2 回答
- 0 关注
- 168 浏览
添加回答
举报