SHA256 Хеші|SHA256 Hashes
#
// Алгоритм хешування [_SHA2_](https://uk.wikipedia.org/wiki/SHA-2)
// використовують для визначення коротких ідентифікаторів
// для бінарних або текстових даних. Він використовується наприклад
// в TLS/SSL сертифікатах.
// В Go визначити хеш SHA2 хеш можна наступним чином.
package main
// Стандартна бібліотека Go включає реалізацію кількох різноманітних
// алгоритмів хешування, вони доступні нам як пакети `crypto/*`.
import (
"crypto/sha256"
"fmt"
)
func main() {
s := "sha256 цей рядок"
// Шаблон для генерації хешу наступний - `sha256.New()`,
// `sha256.Write(bytes)`, і наостанок `sha256.Sum([]byte{})`.
// Почнеємо - з генерації нового хешу.
h := sha256.New()
// `Write` очікує байти і у випадку `s` це рядок,
// скористаємось `[]byte(s)` для конвертації його у байти.
h.Write([]byte(s))
// Результатом цієї операції - стане SHA1 хеш у вигляді
// зрізу байтів, який ми можемо представити як рядок пізніше.
// Аргумент ( що передається методому `Sum`) може бути використано,
// з ціллю додати його на початок отриманого зрізу нашого хешу,
// але насправді така операція зазвичай не потрібна (це не
// "[соління](https://uk.wikipedia.org/wiki/Сіль_(криптографія))"
// як можна було б продумати спочатку).
bs := h.Sum(nil)
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
# Running the program computes the hash and prints it in
# a human-readable hex format.
$ go run sha256-hashes.go
sha256 цей рядок
7c26dbccec9baa0fe6e62e8a34509b567babad17382fd...
# Ви можете обчислювати і інші типи хешів використовуючи
# схожий до вищенаведеного сценарій. Напряклад, для
# прорахунку SHA512 імпортуйте `crypto/sha512` і
# скористайтесь `sha512.New()`.
# Зауважте - якщо вам потрібні криптографічно-безпечні
# хеші - спершу порівняйте переваги і недоліки
# [різноматнітних алгоритмів хешування](https://uk.wikipedia.org/wiki/Криптографічна_хеш-функція)!