Sha1 Hashes

Хеш 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)!