我剛剛從Golang開始,現在我堅持創建MD5。這是我開始得到來自string
一個md5
哈希:如何從Golang中的字符串獲取MD5哈希?
import "crypto/md5"
var original = "my string comes here"
var hash = md5.New(original)
但顯然這不是它的工作原理。有人能爲我提供一個工作樣本嗎?
我剛剛從Golang開始,現在我堅持創建MD5。這是我開始得到來自string
一個md5
哈希:如何從Golang中的字符串獲取MD5哈希?
import "crypto/md5"
var original = "my string comes here"
var hash = md5.New(original)
但顯然這不是它的工作原理。有人能爲我提供一個工作樣本嗎?
參考Sum,對我而言,followin摹做工精良:
package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello")
fmt.Printf("%x", md5.Sum(data))
}
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))
}
strings.Bytes不再存在了,它是[]字節(原始) – marketer
看起來像'Hash .Sum()'現在需要一個字節片作爲第一個參數。 'h.Sum([] byte {})'將修復這個例子。 –
我已經看過這個例子取自的文檔,但是您沒有添加任何內容,例如解釋。爲什麼需要io.WriteString()?爲什麼h.Sum()需要nil作爲參數而不是使用給定的字符串?一個GoNoob閱讀的例子是相當普通的。 –
我發現這個解決方案很好地工作
我用這個MD5哈希我的弦:
import (
"crypto/md5"
"encoding/hex"
)
func GetMD5Hash(text string) string {
hasher := md5.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
import (
"crypto/md5"
"encoding/hex"
)
func GetMD5Hash(text string) string {
hash := md5.Sum([]byte(text))
return hex.EncodeToString(hash[:])
}
這是一個功能,你可以用它來生成一個MD5散列:
// MD5 hashes using md5 algorithm
func MD5(text string) string {
algorithm := md5.New()
algorithm.Write([]byte(text))
return hex.EncodeToString(algorithm.Sum(nil))
}
我放在一起一組的那些實用的散列函數在這裏:https://github.com/shomali11/util
你會找到FNV32
,FNV32a
, FNV64
, FNV65a
,MD5
,SHA1
,SHA256
和SHA512
這個問題的最佳答案是在@Alexei Danchenkov的評論下面。我已經在一個快速運行的示例中實現了它們:https://play.golang.org/p/e7v_erP7Gc – Aaron