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

cri*_*nge 47 md5 cryptography go

这就是我开始从以下方式获取md5哈希的方法string:

import "crypto/md5"

var original = "my string comes here"
var hash = md5.New(original)
Run Code Online (Sandbox Code Playgroud)

但显然这不是它的工作原理.有人能为我提供一份工作样本吗?

Ala*_*lan 43

参考总和,对我而言,以下工作:

package main

import (
    "crypto/md5"
    "fmt"
)

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


use*_*049 36

我发现这个解决方案运行良好

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)))
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*Hsu 34

来自crypto/md5 doc:

package main

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

func main() {
    h := md5.New()
    io.WriteString(h, "The fog is getting thicker!")
    fmt.Printf("%x", h.Sum(nil))
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经看到了这个例子的文档,但你还没有添加任何内容,例如解释.为什么需要io.WriteString()?为什么h.Sum()需要nil作为参数而不是获取给定的字符串?一个GoNoob阅读鹦鹉学舌的例子相当不合理. (9认同)
  • 看起来`Hash.Sum()`现在需要一个字节切片作为第一个参数.`h.Sum([] byte {})`将修复这个例子. (5认同)
  • strings.Bytes在-release上不再存在,它是[] byte(original) (3认同)

avi*_*viv 32

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

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

  • @Madeo 它意味着引用(变量)“hash”存储的切片,有关详细信息您可以在这里查看https://blog.golang.org/slices-intro (2认同)

ser*_*erg 16

我用它来MD5哈希我的字符串:

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

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


Rae*_*ali 6

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

// MD5 hashes using md5 algorithm
func MD5(text string) string {
    algorithm := md5.New()
    algorithm.Write([]byte(text))
    return hex.EncodeToString(algorithm.Sum(nil))
}
Run Code Online (Sandbox Code Playgroud)

我在这里整理了一组这些实用程序哈希函数:https : //github.com/shomali11/util

你会发现FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1,SHA256SHA512