1 回答
TA贡献1824条经验 获得超8个赞
首先,您没有解码十六进制编码的密文。使用encoding/hex包解码数据:
ct, err := hex.DecodeString(`c32e040903088c4db97456263252e0ef4f42627301e0ba3323b141a9ebd0476e5fe848d3c2b6021c8c06581ae2d19f7cd23b011b4b3a68758cb6fb12287db2a9ab6fdfad97670ae995e4deb7ca313d0aa705d264850adefb20353b263fc32ff8dc571f6dce8b722ddbdf40a907`)
if err != nil {
log.Fatal(err)
}
下一个问题是您错误地创建了bytes.Buffer. 您没有将数据放入缓冲区,然后调用Read什么都不做的方法(并且您确实使用数据对其进行了初始化,Read无论如何都会在解密之前“读取”所有数据)。缓冲区可以使用数据初始化,或者使用Write方法填充——在这种情况下,您只需要一个io.Reader并且可以使用bytes.NewReader.
r := bytes.NewReader(ct)
最后,您现在有 30x01个字节,您可以使用更好的格式更清楚地看到:
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 关注
- 428 浏览
添加回答
举报