Хешовете1 от вида SHA256 се ползват често за изчисляване на кратки обозначения за тъждество към пред-определени2 двоични или словни количества от данни. Например удостоверенията TLS/SSL използват SHA256, за да изчислят (и укажат еднозначно) подпис за удостоверение (сертификат). Ето как се изчисляват хешове от вида SHA256 в Го.
Го осъществява няколко хеш функции в различни пакети в областта crypto/*.
import (
"crypto/sha256"
"fmt"
)
func main() {
s := "sha256 this string"
Тук начеваме нов хеш.
h := sha256.New()
Методът Write очаква да му бъдат подадени данни от вида []byte. Ако
имате низ s, използвайте израза []byte(s), за да сведете низа до
отрязък от байтове.
h.Write([]byte(s))
Това действие ни връща завършения хеш като отрязък от байтове.
Подаденият на Sum допълнителен отрязък от байтове може да се постави
пред вече съществуващия хеш, но това обикновено не е нужно.
ТОДО: да намреря къде и за какво може да се ползва тази представка.
bs := h.Sum(nil)
prebs := h.Sum([]byte(`pre`))
fmt.Println(s)
fmt.Printf("%70x\n%70x\n", bs, prebs)
}
Като пуснем програмата, виждаме, че тя изчислява хеша и го показва в четим за човек шестнадесетичен вид.
$ go run sha256-hashes.go
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a0d3d…
7072651af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a0d3d…
Можете да изчислите и други видове хешове, ползващи подобен на използвания
по-горе подход. Например, за да използвате SHA512, внесете пакета
crypto/sha512 и използвайте функцията му sha512.New().
Ако ви е нужен криптографски сигурен хеш, трябва да прочетете внимателно (https://en.wikipedia.org/wiki/Cryptographichashfunction)!
Следващ пример: Превръщане в Base64.