• 欢迎访问IT乐园(o゚▽゚)o
  • 推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。

Golang 的 md5 hash 计算

golang fhy 7年前 (2018-01-29) 5380次浏览 0个评论

Golang 计算 md5 值的方法都是接收 byte 型 slice([]byte)。而且使用习惯上也觉得略奇怪。
感觉 Golang 标准库在设计这些模块的时候,都会考虑使用带 New 关键字工厂生成一个该类型的结构体对象。然后再使用改对象的方法进行操作。

md5 包就是这样,来看例子:

s := "api_key" + ApiKey + "param" + Param + "time" + time + "version" + version + ApiSecret
signByte := []byte(s)
hash := md5.New()
hash.Write(signByte)
return hex.EncodeToString(hash.Sum(nil))

第一行我拼接了一个字符串。

第二行我将这个字符串转成 byte 型数组并赋值给了 sighByte。

第三行我 new 了一个 md5 的实现了 hash.Hash 的结构体。

第四行我调用这个结构体的方法 Write 将我需要计算 md5 的[]byte 传入进去。

第五行我调用 hex.EncodeToSring 方法来把计算结果转换成 16 进制字符串。其中 hash.Sum(nil)方法可以生成前面 Write 进去的 signByte 变量的 128bit md5 值。这个 hash.Sum 方法并不是我们在操作其它语言的那种使用习惯,将值传递进去然后返回 hash,这里其实是追加一个值一并生成 hash。由于我们不需要再追加值了,所以传入 nil 得到 signByte 的 hash 值。

Reference:
http://stackoverflow.com/questions/24234322/golang-md5-sum-function


IT 乐园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Golang 的 md5 hash 计算
喜欢 (1)
关于作者:
九零后挨踢男
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址