本稿では暗号化ライブラリ OpenSSL を用いて、ハッシュ値を求める方法について解説したいと思います。
OpenSSL で求められるハッシュ値
OpenSSL は様々なハッシュ方式に対応しています。 MD2, MD4, MD5, RMD160, SHA, SHA1 のハッシュ値を求めることができます。
MD5のハッシュ値を求める
まずは MD5 のハッシュ値を求める方法について解説します。 MD5は与えられた入力に対して128ビットのハッシュ値を出力するハッシュ関数です。
文字列からMD5のハッシュ値を求めるには、パイプで OpenSSL に文字列を渡すことで求めることができます。 下の例では “TEST” という文字列を MD5 ハッシュ値を求める openssl md5 に渡しています。 結果となるハッシュ値は “2debfdcf79f03e4a65a667d21ef9de14” になりました。
$ echo "TEST" | openssl md5
(stdin)= 2debfdcf79f03e4a65a667d21ef9de14
ファイルのハッシュ値を求めることもできます。 openssl md5 の引数にファイル名を指定します。 ここでは例としてホームディレクトリにあった .bash_profile ファイルのハッシュ値を求めてみました。
$ openssl md5 .bash_profile
MD5(.bash_profile)= 3e8337f44f84b298a8a99869ae8ca76a
SHA-1
同様に SHA-1 のハッシュ値を求める方法についても解説します。 SHA-1は与えられた入力に対して160ビットのハッシュ値を出力するハッシュ関数です。 使い方は上記のMD5の方法と一緒なので利用方法のコードだけ提示します。
文字列から SHA-1 のハッシュ値を求める方法は次のような感じです。
$ echo "TEST" | openssl sha1
(stdin)= 4c49b08e9b258e0e5867d76ce583c159597b6857
指定したファイルのハッシュ値を求める場合は次のような感じです。
$ openssl sha1 .bash_profile
SHA1(.bash_profile)= fe919c7cb7478d0e36a923dfc65895d8c90db426
その他のハッシュ関数
同様に OpenSSL では md2, md4, md5, rmd160, sha, sha1 の関数を利用することができますので、用途に応じて使い分けてください。