Go podle Příkladů: SHA1 Hashe

SHA1 hash funkce jsou často používané pro výpočet krátkých identit pro binární nebo textové bloby. Například, systém git pro správu verzí hojně používá SHA1 pro identifikování verzovaných souborů a adresářů. Tady je jak vypočítat SHA1 hashe v Go.

package main

Go implementuje několik hash funkcí v různých balíčcích crypto/*.

import "crypto/sha1"
import "fmt"
func main() {
    s := "sha1 this string"

Vzor pro generování hashe je sha1.New(), sha1.Write(bytes), potom sha1.Sum([]byte{}). Tady začínáme s novým hashem.

    h := sha1.New()

Write očekává bajty. Pokud máš řetězec s, použij []byte(s) pro vynucení převodu do bajtů.

    h.Write([]byte(s))

Toto získá finalizovaný výsledek hashe jako výřez bajtů. Parametr funkce Sum může být použitý pro přidání k existujícímu výřezů bajtů: to obvykle není potřeba.

    bs := h.Sum(nil)

Hodnoty SHA1 jsou často vypisované ve hexa, například v git commitech. Použij formátovací verb %x pro převod výsledku hashe na hexa string.

    fmt.Println(s)
    fmt.Printf("%x\n", bs)
}

Spuštění programu vypočítá hash a vypíše ho ve lidsky čitelném hexa formátu.

$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94

S použitím podobného vzoru můžeš vypočítat jiné hashe podobné tomu výše. Například pro výpočet MD5 hashe importuj crypto/md5 a použij md5.New().

Poznamenej si, že pokud budeš potřebovat kryptograficky bezpečné hashe, měl bys opatrně prozkoumat sílu hash funkcí!

Další příklad: Kódování base64.