Go による例: SHA256 ハッシュ

SHA256 ハッシュはバイナリまたはテキストの blob の短い識別子を計算するために頻繁に使用されます。たとえば、TLS/SSL 証明書は SHA256 を使用して証明書の署名を計算します。以下は Go で SHA256 ハッシュを計算する方法です。

package main

Go はさまざまな crypto/* パッケージで複数のハッシュ関数を実装しています。

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

ここでは新しいハッシュから始めます。

    h := sha256.New()

Write はバイトを想定しています。文字列 s がある場合は、[]byte(s) を使用してバイトに変換します。

    h.Write([]byte(s))

これにより、最終的なハッシュ結果がバイトスライスとして取得されます。Sum への引数は既存のバイトスライスに追加するために使用できます。通常は必要ありません。

    bs := h.Sum(nil)
    fmt.Println(s)
    fmt.Printf("%x\n", bs)
}

プログラムを実行すると、ハッシュが計算され、人間が読める 16 進形式で印刷されます。

$ go run sha256-hashes.go
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...

上記に示した方法と同様の手順を使用して、他のハッシュを計算できます。たとえば、SHA512 ハッシュを計算するには crypto/sha512 をインポートし、sha512.New() を使用します。

暗号化的に安全なハッシュが必要な場合は、ハッシュの強さについて注意深く調査する必要があります!

次の例: Base64 エンコーディング