golang md5常见用法
package main
import (
"crypto/md5"
"fmt"
"io"
)
func main() {
str := "abc123"
//方法一
data := []byte(str)
has := md5.Sum(data)
md5str1 := fmt.Sprintf("%x", has) //将[]byte转成16进制
fmt.Println(md5str1)
//方法二
w := md5.New()
io.WriteString(w, str) //将str写入到w中
md5str2: = fmt.Sprintf("%x", w.Sum(nil)) //w.Sum(nil)将w的hash转成[]byte格式
fmt.Println(mdtstr2)
}
MD5的所需要的包在”crypto/md5”包中,需要先实例化一个MD5对象,然后在此基础上调用sum方法即可
md5 := md5.New()
io.Copy(md5,file)
MD5Str := hex.EncodeToString(md5.Sum(nil))
上面的代码实现了计算了文件MD5,其中file是multipart.File类型的,也可以是其他的已打开的其他文件类型。
当然也可以不使用io.copy,而是直接使用sum函数来计算:
md5 := md5.New()
MD5Str := hex.EncodeToString(md5.Sum(file))
这样是直接调用了sum函数来计算文件的值可能要比io.copy稍微慢一些。
字符串的MD5
有时候需要将已知的一段字符串加密,其实和文件加密大概是类似的,只需要调用write方法将字符串写入hash中:
md5 := md5.New()
md5.Write([]byte("hello,world!"))
MD5Str := hex.EncodeToString(md5.Sum(nil))
最后更新于 2019-01-12 14:43:39 并被添加「」标签,已有 3235 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处