Go语言使用 MD5 生成散列值

MD5 是一种 Hash 算法。MD5(RFC 1321) 是 Rivest 于1991年对 MD4 的改进版本。

MD5 算法的输出是128位。MD5 比 MD4 更加安全,但是过程更加复杂,计算速度也慢一些。

package main
import (
    "crypto/md5"
    "fmt"
    "io"
)

func main() {
    str := "123456"
    //方法一
    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))

    fmt.Println(md5str2)
}

MD5散列的输出结果为128位(bit),按照16进制(4位一个16进制数)编码后,生成32个字符。

以上的输出结果:

e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e

计算机系统中,数据存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在 C 语言中除了8bit 的 char 之外,还有 16bit 的 short 型,32bit 的 long 型(要看具体 ...