OpenSSLを用いてハッシュ(ダイジェスト)値を求める方法 (MD5, SHA-1 etc…)

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

本稿では暗号化ライブラリ 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 の関数を利用することができますので、用途に応じて使い分けてください。

おわりに

本稿では OpenSSL を利用して様々なハッシュ値を求める方法について解説しました。

OpenSSL 入門へ戻る

OpenSSLのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca