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

标签 go md5

谁能解释为什么这些方法会产生两个不同的输出值? 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)))
}

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

最佳答案

我混淆了 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))
}

Playground :https://play.golang.org/p/fpE5ztnh5U

关于Golang md5 Write vs Sum - 为什么输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641282/

相关文章:

c# - 在 C# 中给定 key 的 MD5 散列

go - 如何在函数中将字符串值转换为自定义类型

json - 通过在golang中检查MongoDB中的多个属性值来检索项目列表

json - golang gin gonic 内容类型未使用 c.JSON 设置为 application/json

Docker GO 构建返回了一个非零代码 : 1

java - Java 中 MD5 的哈希值?

go - Confluence kafka go 软件包与 ubuntu 22.04 兼容吗?

security - md5的碰撞率是多少?

php - 为 md5 哈希分配一个数字(1 到 9 之间)

php - 请评论这种存储用户密码的方法...