Go Sha256Sum 与 Bash sha256sum 的区别
Go Sha256Sum Difference with Bash sha256sum
我的 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
我已经验证密钥是相同的。请注意,我在 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()
另请注意,要计算某些数据的 "one-time" 摘要(在字节切片中准备好),您可以使用 sha256.Sum256()
函数,如下所示:
digest := sha256.Sum256([]byte(sha256Key))
请注意,这里的 digest
将是一个 array (not a slice,在 Go 中它们是完全不同的),一个 [32]byte
类型的数组。要获得切片 "of it"([]byte
类型),请像这样切片:
digestSlice := digest[:]
我的 go 代码生成与 bash 命令行不同的 sha256sum 值。 我通读了各种问题和答案,它们都指向我已经完成的工作,正如这个社区要求我在发帖前做的那样
这是我在 go
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
我已经验证密钥是相同的。请注意,我在 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()
另请注意,要计算某些数据的 "one-time" 摘要(在字节切片中准备好),您可以使用 sha256.Sum256()
函数,如下所示:
digest := sha256.Sum256([]byte(sha256Key))
请注意,这里的 digest
将是一个 array (not a slice,在 Go 中它们是完全不同的),一个 [32]byte
类型的数组。要获得切片 "of it"([]byte
类型),请像这样切片:
digestSlice := digest[:]