SHA1 ハッシュ は、バイナリやテキストのかたまりに対して短い ID を計算するのによく使われます。例えば、 Git バージョン管理システム は バージョン管理されるファイルやディレクトリを識別するために、 SHA1 を広範囲にわたって使用しています。 以下は、Go で SHA1 ハッシュを計算する方法です。 |
|
package main |
|
Go は様々な |
import ( "crypto/sha1" "fmt" ) |
func main() { s := "sha1 this string" |
|
ハッシュを生成するパターンは、 |
h := sha1.New() |
|
h.Write([]byte(s)) |
バイト型のスライスとして最終的なハッシュ値を取得します。
|
bs := h.Sum(nil) |
例えば Git のコミットなど、SHA1 値はよく 16
進数で表示されます。ハッシュ値を 16 進文字列に変換するには、
|
fmt.Println(s) fmt.Printf("%x\n", bs) } |
プログラムを実行すると、ハッシュが計算され、 人間が読める 16 進フォーマットで表示されます。 |
$ go run sha1-hashes.go sha1 this string cf23df2207d99a74fbe169e3eba035e633b65d94 |
先に説明したのと同様のパターンを使って、他のハッシュも計算できます。
例えば、MD5 ハッシュを計算するには、 |
|
暗号論的に安全なハッシュが必要な場合には、 ハッシュの強度 を注意深く調査すべきである点に注意してください! |
Next example: Base64 Encoding.