こんにちは。KOUKIです。
Webアプリケーションを作成するにあたり、MySQLやPostgreSQLと連携させることは、今や当たり前になっています。
そして、ユーザーの機密情報(パスワードなど)をDBに登録するときは、通常の文字列ではなく、外部から完全に秘匿できる形に変換してから登録する必要があります。
そういった場合は、文字列をMD5規格などでハッシュ化してあげるとより堅牢性の高いアプリケーションを作成することができます。
今回は、Go言語でMD5文字列を生成するサンプルを提示したいと思います。
MD5(ハッシュ値)の実装
早速、実装してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package main import ( "crypto/md5" "encoding/hex" "log" ) // GetMd5 - get encoded password with md5 func GetMd5(password string) string { hash := md5.New() defer hash.Reset() hash.Write([]byte(password)) return hex.EncodeToString(hash.Sum(nil)) } func main() { log.Println(GetMd5("hogehoge")) log.Println(GetMd5("hogehoge")) log.Println(GetMd5("hogehoge")) } |
MD5でエンコードされた文字列を作成するには、golangの組み込みパッケージのcrypto/md5パッケージを使えばOKです。
この記事の説明が結構詳しいです。
<簡単な流れ>
- md5をNewする
- 処理が完了後、hashをリセット
- 文字列をbyte型のスライスへ強制変換
- チェックサムを16進数文字列に変換(チェックサムへの追記は不要のためnilを渡す)
以下のコマンドで、プログラムを実行してみましょう。
1 2 3 4 |
$ go run main.go 2020/06/01 06:31:38 329435e5e66be809a656af105f42401e 2020/06/01 06:31:38 329435e5e66be809a656af105f42401e 2020/06/01 06:31:38 329435e5e66be809a656af105f42401e |
OKですね。
おわりに
golangも勉強してみるとなかなか面白いです。
もっと色々な実装方法を知って、記事にしていきたいと思います。
コメントを残す
コメントを投稿するにはログインしてください。