Хеш SHA1 (SHA1 Hashes)|SHA1 Hashes
#
// [_Хеши SHA1_](http://en.wikipedia.org/wiki/SHA-1) часто
// используются для вычисления коротких идентификаторов
// для двоичных или текстовых BLOB-объектов. Например,
// [система контроля версий git](http://git-scm.com/) широко использует SHA1 для
// идентификации версионных файлов и каталогов. Вот как
// вычислить хэши SHA1 в Go.
package main
// Go реализует несколько хеш-функций в пакете
// `crypto/*`.
import (
"crypto/sha1"
"fmt"
)
func main() {
s := "sha1 this string"
// Для генерации хеша используется функция `sha1.New()`,
// `sha1.Write(bytes)`, затем `sha1.Sum([]byte{})`.
// Тут мы создаем новый хеш.
h := sha1.New()
// В `Write` необходимо передать байты. Если у вас есть
// строка `s`, используйте `[]byte(s)`, чтобы привести
// ее к байтам.
h.Write([]byte(s))
// Получаем окончательный результат хеш-функции в виде
// байтового фрагмента. Аргумент в `Sum` добавляет к
// существующему фрагменту байты, но обычно он не используется.
bs := h.Sum(nil)
// Значения SHA1 часто печатаются в шестнадцатеричном формате,
// например, в git commit. Используйте `%x` для преобразования
// результатов хеширования в шестнадцатеричную строку.
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
# Запущенная программа вычисляет хеш и печатает его в
# удобочитаемом шестнадцатеричном формате.
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
# Вы можете вычислить другие хэши, используя шаблон,
# аналогичный показанному выше. Например, для вычисления
# хэшей MD5 импортируйте `crypto/md5` и используйте
# `md5.New()`.
# Обратите внимание, что если вам нужны криптографически
# защищенные хэши, вы должны тщательно исследовать
# [стойкость хэша](http://en.wikipedia.org/wiki/Cryptographic_hash_function)!