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())
打?。?/p>
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 關注
- 238 瀏覽
添加回答
舉報