Java Tips:ハッシュアルゴリズムを使うには?:JAVA Developer
パスワードの照合などによく用いられるのがハッシュアルゴリズム,またはダイジェストと呼ばれる関数です。ここでは,広く利用されているハッシュアルゴリズムのMD5を使う方法を紹介します。
暗号化とは少し違う
ハッシュアルゴリズムとは,データの全体を反映した別のデータを作るアルゴリズムのことです。ダイジェストとも呼ばれます。データが1ビットでも異なれば,それを反映するハッシュデータも異なる値になります。また,逆方向の変換ができないことも特徴の1つです。計算する過程で情報の一部を意図的に欠落させます。こうすることにより,ハッシュ値から元データを復元できなくすることに大きな特徴があります。
ハッシュは,大きなデータから小さなハッシュを作ることで「チェックサム」として使うこともあります。この用途には,CRCのようなアルゴリズムも一般的に使われます。
ハッシュはまた,パスワード照合にも使われます。ハッシュから元データが復元できないため,仮にハッシュが漏れても,パスワードが漏れることを防げます。
このような特徴を持つため,セキュリティの機能の一部として使われることが多いのですが,暗号化とは少し役割が異なる点に注意してください。
MD5の使い方
MD5ダイジェストは次のようにして用います。
- インスタンス生成
- 初期化(必要に応じて)
- バッファから必要なデータで更新
- ダイジェスト値取得
一度利用したインスタンスを再利用する場合は初期化が必要です。また,ダイジェスト値を計算するバッファがストリームのようになっている場合は,更新処理をループで繰り返すことができます。
次の例は,ファイルから読み込んだストリームでMD5ダイジェスト値を生成するサンプルです。この例では変数filenameがファイル名を表しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
バイト列になっていることからもわかるように,これで得られたハッシュ値は表示には適しません。そのため,出力時には適当な形にフォーマットする必要があります。
JAVA Developerより毎週Java Tipsをお届けしましょう。バックナンバーもよろしく。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.