使用Bash sha256sum进行Sha256Sum求和

时间:2018-08-14 19:06:37

标签: bash go sha256

我的执行代码与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

我已经验证了密钥是否相同。请注意,我里面的dateStr变量来自日期格式:

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

通常,我会投票反对,所以我尝试使这个问题尽可能简洁明了。

请让我知道我是否缺少任何东西。

谢谢

1 个答案:

答案 0 :(得分:3)

您说要计算SHA-256校验和,但您要这样做:

hasherSha256 := sha1.New()

这将是SHA-1散列器,而不是SHA-256。而是:

hasherSha256 := sha256.New()

还请注意,要计算某些数据的“一次性”摘要(准备在字节片中),可以使用如下的sha256.Sum256()函数:

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

请注意,这里的digest将是[32]byte类型的数组,它是array(不是slice,在Go中它们是完全不同的)。要获取切片“ of it”(类型为[]byte),请像这样切片:

digestSlice := digest[:]