我的 go 代碼生成的 sha256sum 值與 bash 命令行不同。我已經閱讀了各種問題和答案,它們都指向我已經做過的事情,正如這個社區在發帖前要求我做的那樣這是我的 sha256sum 代碼gosha256Key:=verifyEmail+":"+md5password+":"+dateStrhasherSha256 := sha1.New()hasherSha256.Write([]byte(sha256Key))sha256Val:=hex.EncodeToString(hasherSha256.Sum(nil))這是我的bash腳本代碼:key=$( echo -n "$verifyEmail:$md5PWD:$pwTime" | sha256sum)echo $key我已經驗證密鑰是相同的。請注意,我在 go 中的 dateStr 變量來自日期格式:now := time.Now().Unix()rem := now % 3600date := now-rem dateStr:=strconv.FormatInt(date,10)通常我會被否決,所以我試著讓這個問題盡可能清晰和簡潔。如果我遺漏了什么,請告訴我。
1 回答

心有法竹
TA貢獻1866條經驗 獲得超5個贊
你說你想計算 SHA-256 校驗和,但你這樣做了:
hasherSha256?:=?sha1.New()
那將是一個 SHA-1 散列器,而不是 SHA-256。而是這樣做:
hasherSha256?:=?sha256.New()
另請注意,要計算某些數據的“一次性”摘要(在字節片中準備好),您可以使用sha256.Sum256()
如下函數:
digest?:=?sha256.Sum256([]byte(sha256Key))
請注意,這里digest
將是一個數組(不是slice,在 Go 中它們是完全不同的),一個 type 的數組[32]byte
。要獲得“它的”切片(類型為[]byte
),請像這樣切片:
digestSlice?:=?digest[:]
- 1 回答
- 0 關注
- 221 瀏覽
添加回答
舉報
0/150
提交
取消