使用go语言生成字符串的sha1值

本文是stackoverflow上Generating the SHA hash of a string using golang的翻译

如题,如何快速使用go语言生成一个字符串的hash值?可以是base64/十六进制格式
Answers:

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

func storee(bv []byte) {
    hasher := sha1.New()
    hasher.Write(bv)
    sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))
        ...
}
  • hex
import (
    "crypto/sha1"
    "encoding/hex"
)

func storee(bv []byte) {
    hasher := sha1.New()
    hasher.Write(bv)
    sha := hex.EncodeToString(hasher.Sum(nil)), nil
        ...
}

在上面的例子中使用到了byte数组,在go语言中可以通过下面代码生成string字符串的byte数组:

bv := []byte(myString)

当然没有必要一定要使用 bash64/Hexadecimal进行转化, 也可以直接返回原始的hasher.Sum(nil)生成的字符串数组。

下面是一些关于sha值使用场景的最佳实践:

  • 在数据库中存储时使用原始字节数组存储,而不是序列化后的字符串
  • 当想要将一个sha值提供给某个用户的时候通常使用其十六进制格式
  • 当想使用字符串表示形式时,因为它必须适合 URL 或文件名,建议使用base64格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值