回答

收藏

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

技术问答 技术问答 208 人阅读 | 0 人回复 | 2023-09-12

有人能向我展示如何向我展示myPassword := "beautiful"使用 Go 1生成我拥有的字符串 SHA 哈希的工作示例吗?
) \9 Z7 ^  r+ x文档页面缺少示例,我在 Google 上找不到任何工作代码。/ ?1 Q5 l  ?' l
                                                                $ b) L5 m$ u( B( I7 x: _9 R
    解决方案:                                                                & W4 Q5 q& K7 b$ I/ G2 P# N9 D
                                                                例子 :7 K- {/ \( B' i0 x
    import  "crypto/sha1"    "encoding/base64")func (ms *MapServer) storee(bv []byte)    hasher := sha1.New()    hasher.Write(bv)    sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))        ...}
    & ^7 x8 O9 p/ g3 l
在这个例子中,我从一个字节数组中创建了一个 sha。您可以使用获取字节数组
! f- x; `+ t6 W9 d% H  x+ |& T" `
    bv := []byte(myPassword)
    " n# {! j& `0 ~3 X) x
当然,如果你不需要就不需要 base在64 中编码:您可以使用 Sum 函数返回的原始字节数组。
3 m5 L4 Z! j& p7 K) O下面的评论似乎有点混乱。因此,让我们为下一个用户澄清转换为字符串的最佳实践:
3 u# o* o2 c* Z0 R# Y7 G: L你永远不会 SHA 存储在数据库中作为字符串,但作为原始字节存储/ j! h% d* C  }7 z! e/ F
想向用户显示 SHA 常用的方法是16进制) |8 u9 {0 X: Z. F" _
当您需要字符串表示时,因为它必须适合 URL 或文件名,通常的解决方案是Base64,它更紧凑
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则