回答

收藏

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

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

有人能向我展示如何向我展示myPassword := "beautiful"使用 Go 1生成我拥有的字符串 SHA 哈希的工作示例吗?' {9 Y8 W9 n2 V. k4 J. ]* e
文档页面缺少示例,我在 Google 上找不到任何工作代码。
7 L6 g& z6 P4 r; _/ P$ ~                                                                ! W( Y7 }: n" S7 p, T
    解决方案:                                                                  X' V! m5 F8 y, Y) j  `% S8 S7 w
                                                                例子 :9 H, _" ]$ |! _; Z! @1 s9 l
    import  "crypto/sha1"    "encoding/base64")func (ms *MapServer) storee(bv []byte)    hasher := sha1.New()    hasher.Write(bv)    sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))        ...}8 H% ~8 F( [  W7 \) S- ~. F  ]
在这个例子中,我从一个字节数组中创建了一个 sha。您可以使用获取字节数组; [6 a+ B+ W, s6 I
    bv := []byte(myPassword)
    : X% q; D# l/ y0 e
当然,如果你不需要就不需要 base在64 中编码:您可以使用 Sum 函数返回的原始字节数组。% i1 D; @6 S: G# K
下面的评论似乎有点混乱。因此,让我们为下一个用户澄清转换为字符串的最佳实践:
7 r; p1 F( i8 e你永远不会 SHA 存储在数据库中作为字符串,但作为原始字节存储; c; E; X8 f) U
想向用户显示 SHA 常用的方法是16进制
  I+ G# Z" U$ V& z当您需要字符串表示时,因为它必须适合 URL 或文件名,通常的解决方案是Base64,它更紧凑
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则