【问题标题】:Go Sha256Sum Difference with Bash sha256sum [closed]Go Sha256Sum 与 Bash sha256sum 的区别 [关闭]
【发布时间】:2018-08-15 03:12:10
【问题描述】:

我的 go 代码生成的 sha256sum 值与 bash 命令行不同。 我已经阅读了各种问题和答案,它们都指出了我已经完成的工作,因为这个社区要求我在发布之前完成

这是我在 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)

我通常会被否决,所以我尝试让这个问题尽可能简洁明了。

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

谢谢

【问题讨论】:

标签: bash go sha256


【解决方案1】:

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

hasherSha256 := sha1.New()

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

hasherSha256 := sha256.New()

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

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

请注意,这里的digest 将是一个array(不是slice,在Go 中它们完全不同),一个[32]byte 类型的数组。要获得“它”的切片([]byte 类型),请按如下方式切片:

digestSlice := digest[:]

【讨论】:

  • 你提到我刚想出来这很有趣。
猜你喜欢
  • 2017-02-20
  • 2017-01-02
  • 2014-07-22
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2021-10-30
相关资源
最近更新 更多