1 回答

TA貢獻1824條經(jīng)驗 獲得超8個贊
首先,您沒有解碼十六進制編碼的密文。使用encoding/hex包解碼數(shù)據(jù):
ct, err := hex.DecodeString(`c32e040903088c4db97456263252e0ef4f42627301e0ba3323b141a9ebd0476e5fe848d3c2b6021c8c06581ae2d19f7cd23b011b4b3a68758cb6fb12287db2a9ab6fdfad97670ae995e4deb7ca313d0aa705d264850adefb20353b263fc32ff8dc571f6dce8b722ddbdf40a907`)
if err != nil {
log.Fatal(err)
}
下一個問題是您錯誤地創(chuàng)建了bytes.Buffer. 您沒有將數(shù)據(jù)放入緩沖區(qū),然后調(diào)用Read什么都不做的方法(并且您確實使用數(shù)據(jù)對其進行了初始化,Read無論如何都會在解密之前“讀取”所有數(shù)據(jù))。緩沖區(qū)可以使用數(shù)據(jù)初始化,或者使用Write方法填充——在這種情況下,您只需要一個io.Reader并且可以使用bytes.NewReader.
r := bytes.NewReader(ct)
最后,您現(xiàn)在有 30x01個字節(jié),您可以使用更好的格式更清楚地看到:
d, err := ioutil.ReadAll(md.UnverifiedBody)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", d)
https://play.golang.org/p/Y3VqADQvEIH
- 1 回答
- 0 關(guān)注
- 455 瀏覽
添加回答
舉報