小编典典

使用golang生成字符串的SHA哈希

go

有人可以给我展示一个如何myPassword := "beautiful"使用Go 1 生成一个字符串的SHA哈希的工作示例吗?

文档页面缺少示例,我在Google上找不到任何有效的代码。


阅读 582

收藏
2020-07-02

共1个答案

小编典典

一个例子 :

import (
    "crypto/sha1"
    "encoding/base64"
)

func (ms *MapServer) storee(bv []byte) {
    hasher := sha1.New()
    hasher.Write(bv)
    sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))
        ...
}

在此示例中,我从字节数组进行着色。您可以使用以下方法获取字节数组

bv := []byte(myPassword)

当然,如果不需要,您不需要在base64中进行编码:您可以使用Sum函数返回的原始字节数组。

下面的评论似乎有些混乱。因此,让我们为下一个用户阐明有关转换为字符串的最佳做法:

  • 您永远不会将SHA作为字符串存储在数据库中,而作为原始字节存储
  • 当您想向用户显示SHA时,常见的方法是十六进制
  • 当您需要一个字符串表示形式(因为它必须适合URL或文件名)时,通常的解决方案是Base64,它更紧凑
2020-07-02