go で暗号化:SHA2 でチェックサムの計算と検証

はじめに

go の暗号化処理についてまとめます。
今回は SHA2 として crypto/sha256, crypto/sha512チェックサムの計算と検証を行います。

crypto/sha256, crypto/sha512

サーバー証明書の署名として利用されることの多いハッシュアルゴリズムです。
go の標準パッケージに入っており、必要な関数がシンプルに定義されてます。

golang.org

それぞれ sha256: 32byte, sha512: 64byte 長のチェックサムを生成できる。

package main

import (
    "crypto/sha256"
    "crypto/sha512"

    "fmt"
)

func main() {
    msg := []byte("This is go-encryption sha2 example")

    checksum256 := sha256.Sum256(msg)
    fmt.Printf("SHA256 length: %d \n", len(checksum256)) // SHA256 length: 32 
    fmt.Printf("SHA256 checksum: %x\n", checksum256) // SHA256 checksum: fb25f4d320dde73fd698302599553ec262ec4c90756398363aaa4889080f18d6

    checksum512 := sha512.Sum512(msg)
    fmt.Printf("SHA512 length: %d \n", len(checksum512)) // SHA512 length: 64 
    fmt.Printf("SHA512 checksum: %x\n", checksum512) // SHA512 checksum: 1d098a71d5d39ee63c01a39bc284e39a94b72648e63167d3efe40ccfaded0912a708dc61b823b40f7ccb8d92a32faef08882f0ddd2170cce88f7121c50dbe77a
}

まとめ

SHA2 として crypto/sha256, crypto/sha512チェックサムの計算を行いました。
"golang.org/x/crypto/sha3" として準標準パッケージでSHA3も提供されているようです。