Cryptography 如何从Golang中的字符串获取MD5哈希?

Cryptography 如何从Golang中的字符串获取MD5哈希?,cryptography,md5,go,Cryptography,Md5,Go,这就是我如何开始从字符串中获取md5哈希的原因: import "crypto/md5" var original = "my string comes here" var hash = md5.New(original) 但显然这不是它的工作原理。有人能为我提供一个工作样本吗?来自: 我发现这个解决方案很有效 package main import ( "crypto/md5" "encoding/hex" "fmt" ) func main() { v

这就是我如何开始从
字符串中获取
md5
哈希的原因:

import "crypto/md5"

var original = "my string comes here"
var hash = md5.New(original)
但显然这不是它的工作原理。有人能为我提供一个工作样本吗?

来自:


我发现这个解决方案很有效

package main

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

func main() {
    var str string = "hello world"

    hasher := md5.New()
    hasher.Write([]byte(str))
    fmt.Println(str)
    fmt.Println(hex.EncodeToString(hasher.Sum(nil)))
}

我使用此函数对字符串进行MD5哈希:

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

func GetMD5Hash(text string) string {
    hasher := md5.New()
    hasher.Write([]byte(text))
    return hex.EncodeToString(hasher.Sum(nil))
}
参考,对我来说,以下工作做得很好:

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello")
    fmt.Printf("%x", md5.Sum(data))
}

下面是一个可用于生成MD5哈希的函数:

// MD5 hashes using md5 algorithm
func MD5(text string) string {
    algorithm := md5.New()
    algorithm.Write([]byte(text))
    return hex.EncodeToString(algorithm.Sum(nil))
}
我在这里组合了一组实用程序哈希函数:


您将发现
FNV32
FNV32a
FNV64
FNV65a
MD5
SHA1
SHA256
SHA512

字符串。字节在发布时不再存在,它的[]字节(原始)看起来像
Hash.Sum()
现在需要一个字节片作为第一个参数
h.Sum([]字节{})
将修复此示例。我已经看到了此示例取自的文档,但您没有添加任何内容,例如解释。为什么需要io.WriteString()?为什么h.Sum()需要nil作为参数,而不是接受给定的字符串?阅读重复的例子是相当不恰当的。@IanLewis Writer
io.WriteString()
与主题无关
fmt.Fprintf(h,“雾越来越浓!”)
将产生相同的结果。更清晰的是一行
fmt.Printf(“%x\n”,md5.Sum([]字节(“敏捷的棕色狐狸跳过懒狗”))
h.Sum(in)
调用任何
in
都会将
h
的md5散列附加到
in
——也就是说,将它们连接起来(参见源代码,第88行:)。我想获取字符串,而不是将其打印到控制台O.O.。这个问题的最佳答案是下面@Alexei Danchenkov的评论。我已经在这里的一个快速运行的示例中实现了它们:做得好,但是您的答案来得晚。。。同样的答案早在你的三年前就已经给出了!做得好!我个人喜欢你的简单包装“透明地”工作,因为很多其他编程语言都做同样的事情……哈希[:]
的目的是什么?Thanks@Madeo它指的是引用(变量)
散列的存储的一个切片,您可以在这里看到详细信息
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello")
    fmt.Printf("%x", md5.Sum(data))
}
// MD5 hashes using md5 algorithm
func MD5(text string) string {
    algorithm := md5.New()
    algorithm.Write([]byte(text))
    return hex.EncodeToString(algorithm.Sum(nil))
}