先看實現代碼:數組
package main app
import (
"crypto/md5"
"encoding/hex"
"fmt"
) 函數
func main() {
h := md5.New()
h.Write([]byte("123456")) // 須要加密的字符串爲 123456
cipherStr := h.Sum(nil)
fmt.Println(cipherStr)
fmt.Printf("%s\n", hex.EncodeToString(cipherStr)) // 輸出加密結果
}加密
代碼輸入效果:code
說明:對象
Golang的加密庫都放在crypto目錄下,其中MD5庫在crypto/md5包中,該包主要提供了New和Sum函數。 blog
這裏直接對一串字符串計算MD5。其中經過md5.New()初始化一個MD5對象,其實它是一個hash.Hash對象。 函數原型爲:
接口
// New returns a new hash.Hash computing the MD5 checksum.ip
func New() hash.Hash {
d := new(digest)
d.Reset()
return d
}
該對象實現了hash.Hash的Sum接口:計算出校驗和。其函數原型 爲:
// Hash is the common interface implemented by all hash functions.md5
type Hash interface {
// Sum appends the current hash to b and returns the resulting slice.
// It does not change the underlying hash state.
Sum(b []byte) []byte
…
}
Sum 函數是對hash.Hash對象內部存儲的內容進行校驗和 計算而後將其追加到data的後面造成一個新的byte切片。所以一般的使用方法就是將data置爲nil。
該方法返回一個Size大小的byte數組,對於MD5來講就是一個128bit的16字節byte數組。
參考資料:
Golang計算MD5
http://gotaly.blog.51cto.com/8861157/1403942