Go で SHA256 ハッシュを計算する

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Go 言語で SHA256 ハッシュを計算する方法を示します。SHA256 ハッシュは、バイナリまたはテキストデータの短い識別子を計算するために一般的に使用されます。

SHA256 ハッシュ

文字列が与えられた場合、その SHA256 ハッシュを計算します。

  • プログラムは crypto/sha256fmt パッケージをインポートする必要があります。
  • プログラムは sha256.New() 関数を使用して新しいハッシュを作成する必要があります。
  • プログラムは Write 関数を使用して、文字列のバイトをハッシュに書き込む必要があります。
  • プログラムは Sum 関数を使用して、最終的なハッシュ結果をバイトスライスとして取得する必要があります。
  • プログラムは、元の文字列とハッシュ結果を 16 進数形式で出力する必要があります。
## プログラムを実行すると、ハッシュが計算され、人間が読みやすい 16 進形式で出力されます。
$ go run sha256-hashes.go
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...

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

## 暗号学的に安全なハッシュが必要な場合は、
## [ハッシュの強度](https://en.wikipedia.org/wiki/Cryptographic_hash_function) について
## 注意深く調査する必要があります!

以下に完全なコードがあります。

// [_SHA256 ハッシュ_](https://en.wikipedia.org/wiki/SHA-2) は、
// バイナリまたはテキストデータの短い識別子を計算するために頻繁に使用されます。
// たとえば、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)
}

まとめ

この実験では、crypto/sha256 パッケージを使用して Go で SHA256 ハッシュを計算する方法を示しました。要件に従い、TODO セクションを完成させることで、プログラムは与えられた文字列の SHA256 ハッシュを計算することができます。