SHA1 ハッシュ関数はバイナリや文字列の短い識別子を計算するためによく使う。 例えばバージョン管理システムである Git ではファイルやディレクトリを識別するために SHA1 を使っている。 それでは、Go で SHA1 を計算する例を見ていこう。 |
|
![]() ![]() package main
|
|
|
import (
"crypto/sha1"
"fmt"
)
|
func main() {
s := "sha1 this string"
|
|
ハッシュ値を生成するには |
h := sha1.New()
|
|
h.Write([]byte(s))
|
バイトのスライスとして、最終的なハッシュ値を得る。
|
bs := h.Sum(nil)
|
SHA1 のハッシュ値は、Git がそうしているように、16進記数法で表示することが多い。
フォーマット文字列に |
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
|
プログラムはハッシュ値を計算し、人が読みやすい16進記数法で結果を表示する。 |
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
|
上と同様のやり方で他のハッシュ関数を計算することもできる。
例えば MD5 ハッシュ関数を使いたければ、
|
|
ただし、暗号学的に安全なハッシュ関数を使いたい場合には ハッシュ関数の強度について知る必要がある。 |
次の例:Base64 Encoding