2010-03-04 13 views
31

Właśnie zaczynam od Golang i teraz utknąłem w tworzeniu MD5. W ten sposób zacząłem dostać md5 skrót od A string:Jak uzyskać skrót MD5 z ciągu znaków w Golang?

import "crypto/md5" 

var original = "my string comes here" 
var hash = md5.New(original) 

Ale oczywiście nie jest to w jaki sposób to działa. Czy ktoś może mi podać do tego próbkę roboczą?

+0

Najlepsza odpowiedź na to pytanie znajduje się w komentarzach @Alexei Danchenkov poniżej. Zaimplementowałem je w szybkim, działającym przykładzie: https://play.golang.org/p/e7v_erP7Gc – Aaron

Odpowiedz

26

referencyjny Sum, Dla mnie followin g praca dobrze:

package main 

import (
    "crypto/md5" 
    "fmt" 
) 

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

Od 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)) 
} 
+3

stringi.Bytes już nie istnieje na -release, to [] bajt (oryginał) – marketer

+5

Wygląda jak "Hash" .Sum() 'potrzebuje teraz bajtu jako pierwszego argumentu. 'h.Sum ([] byte {})' naprawi ten przykład. –

+7

Widziałem dokumentację, z której pochodzi ten przykład, ale nie dodałeś do niej niczego, jak na przykład wyjaśnienie. Dlaczego wymagana jest funkcja io.WriteString()? Dlaczego h.Sum() wymaga nil jako argumentu zamiast przyjmowania podanego ciągu? Odtworzenie przykładowych poleceń GoNoob jest raczej nierozsądne. –

12

Używam tego do MD5 hash moje struny:

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

func GetMD5Hash(text string) string { 
    hasher := md5.New() 
    hasher.Write([]byte(text)) 
    return hex.EncodeToString(hasher.Sum(nil)) 
} 
18
import (
    "crypto/md5" 
    "encoding/hex" 
) 

func GetMD5Hash(text string) string { 
    hash := md5.Sum([]byte(text)) 
    return hex.EncodeToString(hash[:]) 
} 
0

Oto funkcja można użyć do generowania skrótu MD5:

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

ułożyła grupa tych funkcji użytkowych hash tutaj: https://github.com/shomali11/util

Będziesz znaleźć FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 i SHA512

Powiązane problemy