代码之家  ›  专栏  ›  技术社区  ›  somejkuser

Go sha256sum difference with bash sha256sum[关闭]

  •  -4
  • somejkuser  · 技术社区  · 7 年前

    我的go代码生成的sha256sum值与bash命令行不同。 我已经阅读了各种各样的问题和答案,它们都指向我已经做过的事情,正如这个社区在发布前要求我做的那样。

    这是我的夏256密码 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)
    

    通常我会被否决,所以我尽量使这个问题尽可能清晰和简洁。

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

    谢谢

    1 回复  |  直到 7 年前
        1
  •  3
  •   icza    7 年前

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