我的执行代码与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)
通常,我会投票反对,所以我尝试使这个问题尽可能简洁明了。
请让我知道我是否缺少任何东西。
谢谢
答案 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[:]