【发布时间】:2020-03-09 10:55:35
【问题描述】:
我有以下代码:
package main
import (
"crypto/md5"
"encoding/json"
"fmt"
)
type Payload struct {
HVIN []byte `json:"hvin"`
}
func main() {
vin := "1GBJC34R1VF063154"
md5 := md5.New()
md5Vin := md5.Sum([]byte(vin))
payload := &Payload{
HVIN: md5Vin,
}
b, _ := json.Marshal(payload)
fmt.Printf("%s", string(b))
}
如果我在https://play.golang.org/ 运行代码,我会得到以下输出:
{"hvin":"MUdCSkMzNFIxVkYwNjMxNTTUHYzZjwCyBOmACZjs+EJ+"}
如何在 Python 3 中复制它?
我尝试了以下操作:
import hashlib
result = hashlib.md5(b'1GBJC34R1VF063154')
print(result.hexdigest())
得到以下与 Go 给出的输出不匹配的输出:
a40f771ea430ae32dbc5e818387549d3
谢谢。
【问题讨论】:
-
如果将
fmt.Printf("%s", string(b))替换为fmt.Printf("%x", md5Vin)会得到什么? -
仅供参考,Go 输出 Base64 编码的输入,最后加上一些垃圾:将其通过管道输送到
base64 -D打印1GBJC34R1VF063154加上一些尾随的不可打印字节。 -
问题是,如果我采用哈希并进行 base64 编码,我得到: YTQwZjc3MWVhNDMwYWUzMmRiYzVlODE4Mzg3NTQ5ZDM 与 MUdCSkMzNFIxVkYwNjMxNTTUHYzZjwCyBOmACZjs+EJ+ 不匹配
标签: python python-3.x go hash md5