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

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

無法讓 python 遵循 go 的 base32 編碼

無法讓 python 遵循 go 的 base32 編碼

Go
呼啦一陣風 2023-06-26 15:02:38
我正在嘗試從 python 中復制 sha256 哈希值的 Base32 編碼。我只是無法讓 python 產生相同的 base32 輸出。我可能正在做一些明顯錯誤的事情。幫助!去代碼:package mainimport (? ? "fmt"? ? "crypto/sha256"? ? "encoding/base32")func main() {? ? namespace := "my-ns"? ? policyName := "default-deny"? ? chksum := sha256.Sum256([]byte(namespace + policyName))? ? fmt.Printf("%x\n", chksum)? ? fmt.Println(base32.StdEncoding.EncodeToString(chksum[:]))? ? fmt.Println(base32.StdEncoding.EncodeToString([]byte("abc")))}運行這個會產生:dd684919ef4a1362b841409f5255ec963bd53d353804114779c4e6d66641eb283VUESGPPJIJWFOCBICPVEVPMSY55KPJVHACBCR3ZYTTNMZSB5MUA====MFRGG===Python代碼:#!/usr/bin/env pythonimport hashlibimport base64namespace = "my-ns"policyName = "default-deny"sha256 = hashlib.sha256()sha256.update(namespace+policyName)chksum = sha256.hexdigest()print chksumprint base64.b32encode(chksum)print base64.b32encode(bytearray("abc"))運行這個會產生:dd684919ef4a1362b841409f5255ec963bd53d353804114779c4e6d66641eb28MRSDMOBUHEYTSZLGGRQTCMZWGJRDQNBRGQYDSZRVGI2TKZLDHE3DGYTEGUZWIMZVGM4DANBRGE2DONZZMM2GKNTEGY3DMNBRMVRDEOA=MFRGG===每個輸出的第一行都一致,這很好。讓我知道 sha256 校驗和在每一側的計算方式都是相同的。每個的第二行都不同意,我不明白為什么——我在 python 代碼中嘗試了許多不同的 chksum 轉換,但沒有成功。每個中的第三行只是表明簡單字符串的 base32 編碼似乎在雙方都有效。
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

在 Python 方面,您將獲得十六進制編碼的 SHA256 哈希值,然后對十六進制數字進行 Base32 編碼。要修復它,請使用以下命令:


sha256 = hashlib.sha256()

sha256.update(namespace+policyName)

chksum = sha256.digest() # Get hash as byte string

print chksum.encode('hex') # Convert byte string to hexadecimal for printing

print base64.b32encode(chksum)

print base64.b32encode(bytearray("abc"))


查看完整回答
反對 回復 2023-06-26
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

go 版本不是對摘要的十六進制版本進行 base32 編碼。它對原始形式進行編碼。您在每一面以不同的方式打印十六進制形式。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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