bash - Go Sha256Sum 与 Bash sha256sum 的区别

标签 bash go sha256

<分区>

我的 go 代码生成了与 bash 命令行不同的 sha256sum 值。 我通读了各种问题和答案,它们都指向我已经完成的工作,正如这个社区要求我在发帖前做的那样

这是我在 go

上的 sha256sum 代码
sha256Key:=verifyEmail+":"+md5password+":"+dateStr
hasherSha256 := sha1.New()
hasherSha256.Write([]byte(sha256Key))
sha256Val:=hex.EncodeToString(hasherSha256.Sum(nil))

这是我的 bash 脚本代码:

key=$( echo -n "$verifyEmail:$md5PWD:$pwTime" | sha256sum)
echo $key

我已经验证了 key 是相同的。请注意,我在 go 中的 dateStr 变量来自日期格式:

now := time.Now().Unix()
rem := now % 3600
date := now-rem         
dateStr:=strconv.FormatInt(date,10)

通常我会得到反对票,所以我试着让这个问题尽可能清晰和简洁。

如果我遗漏了什么,请告诉我。

谢谢

最佳答案

你说你想计算 SHA-256 校验和,但你确实这样做了:

hasherSha256 := sha1.New()

那将是一个 SHA-1 哈希器,而不是 SHA-256。而是这样做:

hasherSha256 := sha256.New()

另请注意,要计算某些数据的“一次性”摘要(在字节 slice 中准备好),您可以使用 sha256.Sum256()像这样的功能:

digest := sha256.Sum256([]byte(sha256Key))

请注意,此处的digest 将是一个array。 (不是 slice ,在 Go 中它们完全不同),[32]byte 类型的数组。要获得“它的” slice ([]byte 类型),像这样 slice :

digestSlice := digest[:]

关于bash - Go Sha256Sum 与 Bash sha256sum 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51848270/

相关文章:

json - 如何使用curl从bash变量发布整个json字符串?

go - “go test -cpuprofile”不会生成完整的跟踪

json - 在 revel 中解析 json 日期时间

java - 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCaSTLe

linux - bash | curl | curl 2 个 URL 然后停止

linux - 从 4 个十六进制数字生成 'unique' 3 个字符的标签

linux - 使用文本并用作命令?

windows - 使用 golang 映射 Windows 驱动器的最佳方法是什么?

C# 计算并验证 SEPA (XML) 付款文件的 SHA256 值

php - 可以将 MD5 转换为 SHA256 吗?