一尘不染

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

go

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

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


阅读 150

收藏
2021-12-26

共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))
        ...
}

在这个例子中,我从一个字节数组中创建了一个 sha。您可以使用获取字节数组

bv := []byte(myPassword) 

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

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

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