登录
首页 >  Golang >  Go问答

比较 Go Sha256Sum 与 Bash sha256sum 的特性

来源:stackoverflow

时间:2024-03-07 20:30:36 409浏览 收藏

哈喽!今天心血来潮给大家带来了《比较 Go Sha256Sum 与 Bash sha256sum 的特性》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我的 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)

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

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

谢谢


解决方案


您说您想要计算 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[:]

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>