2010-03-04 28 views
31

Estoy comenzando con Golang y ahora estoy atascado en la creación de MD5. Así es como empecé a tener un hash de una md5string:¿Cómo obtener un hash MD5 de una cadena en Golang?

import "crypto/md5" 

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

Pero obviamente esto no es así como funciona. ¿Alguien puede proporcionarme una muestra de trabajo para esto?

+0

La mejor respuesta a esta pregunta está en los comentarios de @Alexei Danchenkov a continuación. Los he implementado en un ejemplo ejecutable rápido aquí: https://play.golang.org/p/e7v_erP7Gc – Aaron

Respuesta

26

Referencia Sum, Para mí, siguiendo g trabajo bien:

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 ya no existe en -release, es [] byte (original) – marketer

+5

Parece 'Hash .Sum() 'necesita un segmento de bytes como primer argumento ahora. 'h.Sum ([] byte {})' arreglará este ejemplo. –

+7

He visto la documentación de la que se toma este ejemplo, pero no le ha agregado nada, como una explicación, por ejemplo. ¿Por qué se requiere io.WriteString()? ¿Por qué h.Sum() requiere nil como argumento en lugar de tomar la cadena dada? A un GoNoob leyendo ejemplos parrotados es bastante poco edificante. –

29

He encontrado esta solución funcione bien

12

Lo utilizo para hash MD5 mis cuerdas:

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

Aquí es una función que puede utilizar para generar un 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)) 
} 

Monté un grupo de esas funciones hash utilidad aquí: https://github.com/shomali11/util

Se hará encontrar FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 y SHA512

Cuestiones relacionadas