Как получить шестнадцатеричный хэш md5 в Go - PullRequest
3 голосов
/ 03 ноября 2011

Я пытаюсь получить md5-хеш файла в Go, например:

running_hash := md5.New(); // type hash.Hash
running_hash.Write(data);  // data is []byte
sum := running_hash.Sum(); // []uint8 according to the compiler

Но когда я пытаюсь получить строку с суммой хэша (http://golang.org/pkg/hash/), через

sumstring := string(sum);  // returns 'Ӿ��]앿��N��' or similar

когда предполагается, что хеш равен d3be9e835dec95bfbef34ebe1fbf03da. Я получаю такую ​​же ерунду, только с разными символами, когда пытаюсь конвертировать побайтово.

Как я должен получить строку хеша?

Ответы [ 2 ]

13 голосов
/ 03 ноября 2011

По сути, у вас есть двоичные данные, но похоже, что вы ожидаете гекс.Взгляните на пакет hex для процедур преобразования, особенно EncodeToString.Я не программист на Go, но я думаю, что если вы просто передадите sum в hex.EncodeToString, вы получите ожидаемый ответ.

5 голосов
/ 03 ноября 2011

альтернативно, вы можете легко получить шестнадцатеричное представление строки или байтового фрагмента, используя fmt.Sprintf("%x", sum)

...