Go за Прикладом: SHA256 Хеші

Алгоритм хешування SHA2 використовують для визначення коротких ідентифікаторів для бінарних або текстових даних. Він використовується наприклад в 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) може бути використано, з ціллю додати його на початок отриманого зрізу нашого хешу, але насправді така операція зазвичай не потрібна (це не “соління)” як можна було б продумати спочатку).

    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().

Зауважте - якщо вам потрібні криптографічно-безпечні хеші - спершу порівняйте переваги і недоліки різноматнітних алгоритмів хешування!

Наступний приклад: Кодування Base64.