Golang md5 Write vs Sum - 为什么输出不同?

tgr*_*ser 4 md5 go

谁能解释为什么这些方法会产生两个不同的输出值?从 md5 文档中不清楚。

import (
    "crypto/md5"
    "encoding/hex"
    "fmt"
)

func GetMD5HashWithWrite(text string) string {
    hasher := md5.New()
    hasher.Write([]byte(text))
    return hex.EncodeToString(hasher.Sum(nil))
}

func GetMD5HashWithSum(text string) string {
    hasher := md5.New()
    return hex.EncodeToString(hasher.Sum([]byte(text)))
}
Run Code Online (Sandbox Code Playgroud)

参见示例:https : //play.golang.org/p/Fy7KgfCvXc

tgr*_*ser 5

我把 hasher.Sum() 和 md5.Sum() 混在一起了。这些确实产生了等效的输出。

func GetMD5HashWithWrite(text string) []byte {
    hasher := md5.New()
    hasher.Write([]byte(text))
    return hasher.Sum(nil)
}

func GetMD5HashWithSum(text string) [16]byte {
    return md5.Sum([]byte(text))
}
Run Code Online (Sandbox Code Playgroud)

游乐场:https : //play.golang.org/p/fpE5ztnh5U