求md5主要有两种方式:
1 has := md5.Sum(data); md5str1 := fmt.Sprintf("%x", has); 这种直接计算md5的值;
2 w := md5.New(); w.Write([]byte{49, 50, 51, 52}); md5str2 := fmt.Sprintf("%x", w.Sum(nil)) 生成md5对象,然后根据io.Writer的接口往md5对象里写数据,再调用md5对象的Sum方法。
package main
import (
"crypto/md5"
"fmt"
"io"
"log"
"os"
)
func main() {
str := "abc1231234"
data := []byte(str)
has := md5.Sum(data)
md5str1 := fmt.Sprintf("%x", has)
fmt.Println(md5str1)
w := md5.New()
io.WriteString(w, "abc123")
w.Write([]byte{49, 50, 51, 52})
md5str2 := fmt.Sprintf("%x", w.Sum(nil))
fmt.Println(md5str2)
md5Code := fmt.Sprintf("%x", md5.New().Sum(nil))
fmt.Println(md5Code)
currentPath, _ := os.Getwd()
fileName := currentPath + string(os.PathSeparator) + "1.log"
f, err := os.Open(fileName)
if err != nil {
log.Fatal(err)
}
defer f.Close()
h := md5.New()
if _, err := io.Copy(h, f); err != nil {
log.Fatal(err)
}
fmt.Printf("file md5:%x\n", h.Sum(nil))
}