亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

cryptojs 和 golang 給出不同的 sha3 哈希值

cryptojs 和 golang 給出不同的 sha3 哈希值

Go
汪汪一只貓 2023-07-26 19:47:13
我正在嘗試在 JS 中生成 sha3-512 哈希并在 golang 服務器中檢查它。然而,cryptoJS 生成的哈希值與 golang 不同。加密JS:CryptoJS.algo.SHA3.create().update("foo").finalize().toString(CryptoJS.enc.Hex)輸出:1597842aac52bc9d13fe249d808afbf44da13524759477404c3592ee331173e89fe1cbf21a7e4360990d565fad4643cdb209d80fa41a91dea97e665022c92135戈蘭:hex.EncodeToString(crypto.SHA3_512.New().Sum([]byte("foo")))輸出:666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26我希望這些哈希值相等,但事實并非如此
查看完整描述

2 回答

?
aluckdog

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


查看完整回答
反對 回復 2023-07-26
?
慕雪6442864

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 變體示例。


查看完整回答
反對 回復 2023-07-26
  • 2 回答
  • 0 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號