【发布时间】:2018-01-03 00:17:47
【问题描述】:
我正在尝试在 go 中构建一个 base64 编码的 sha1 哈希,但我得到的结果与其他编程语言的结果非常不同
package main
import (
"crypto/sha1"
"encoding/base64"
"fmt"
)
func main() {
c := sha1.New()
input := []byte("hello")
myBytes := c.Sum(input)
fmt.Println(base64.StdEncoding.EncodeToString(base64.StdPadding))
}
此 Go 代码打印出 aGVsbG/aOaPuXmtLDTJVv++VYBiQr9gHCQ==
我的 Python 代码如下所示
import hashlib
import base64
print(base64.b64encode(hashlib.sha1('hello').digest()))
并输出qvTGHdzF6KLavt4PO0gs2a6pQ00=
我用于比较的 bash 命令如下所示
echo -n hello| openssl dgst -sha1 -binary |base64
并输出这个qvTGHdzF6KLavt4PO0gs2a6pQ00=
这让我假设 python 代码做的一切都是正确的。 但是为什么 go 会打印另一个结果。 我的错在哪里?
提前谢谢
【问题讨论】:
标签: python encryption go openssl sha1