2010-03-04 3 views
31

Je ne fais que commencer avec Golang et je suis maintenant bloqué sur la création MD5. Voici comment j'ai commencé à obtenir un hachage md5 d'un string:Comment obtenir un hachage MD5 à partir d'une chaîne de caractères à Golang?

import "crypto/md5" 

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

Mais ce n'est évidemment pas comment cela fonctionne. Quelqu'un peut-il me fournir un échantillon de travail pour cela?

+0

La meilleure réponse à cette question est dans les commentaires par @Alexei Danchenkov ci-dessous. Je les ai implémentés dans un exemple exécutable rapidement ici: https://play.golang.org/p/e7v_erP7Gc – Aaron

Répondre

26

Référence Sum, Pour moi, suivre g bien le travail:

package main 

import (
    "crypto/md5" 
    "fmt" 
) 

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

De 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

strings.Bytes n'existe plus sur -release, c'est [] byte (original) – marketer

+5

On dirait 'Hash .Sum() 'a besoin d'une tranche d'octets comme premier argument maintenant. 'h.Sum ([] byte {})' va corriger cet exemple. –

+7

J'ai vu la documentation de cet exemple mais vous n'y avez rien ajouté, comme une explication par exemple. Pourquoi io.WriteString() est-il nécessaire? Pourquoi h.Sum() nécessite-t-il un nil comme argument plutôt que de prendre la chaîne donnée? Une lecture de GoNoob parrotée est plutôt peu édifiante. –

29

Je trouve que cette solution fonctionne bien

12

J'utilise ceci pour hachage MD5 mes cordes:

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

est une fonction Ici vous pouvez utiliser pour générer un hachage MD5:

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

Je Réunissez un groupe de ces fonctions de hachage utilitaire ici: https://github.com/shomali11/util

Vous allez trouver FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 et SHA512

Questions connexes