検索
連載

Java Tips:ハッシュアルゴリズムを使うには?JAVA Developer

パスワードの照合などによく用いられるのがハッシュアルゴリズム,またはダイジェストと呼ばれる関数です。ここでは,広く利用されているハッシュアルゴリズムのMD5を使う方法を紹介します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

暗号化とは少し違う

 ハッシュアルゴリズムとは,データの全体を反映した別のデータを作るアルゴリズムのことです。ダイジェストとも呼ばれます。データが1ビットでも異なれば,それを反映するハッシュデータも異なる値になります。また,逆方向の変換ができないことも特徴の1つです。計算する過程で情報の一部を意図的に欠落させます。こうすることにより,ハッシュ値から元データを復元できなくすることに大きな特徴があります。

 ハッシュは,大きなデータから小さなハッシュを作ることで「チェックサム」として使うこともあります。この用途には,CRCのようなアルゴリズムも一般的に使われます。

 ハッシュはまた,パスワード照合にも使われます。ハッシュから元データが復元できないため,仮にハッシュが漏れても,パスワードが漏れることを防げます。

 このような特徴を持つため,セキュリティの機能の一部として使われることが多いのですが,暗号化とは少し役割が異なる点に注意してください。

MD5の使い方

 MD5ダイジェストは次のようにして用います。

  • インスタンス生成
  • 初期化(必要に応じて)
  • バッファから必要なデータで更新
  • ダイジェスト値取得

 一度利用したインスタンスを再利用する場合は初期化が必要です。また,ダイジェスト値を計算するバッファがストリームのようになっている場合は,更新処理をループで繰り返すことができます。

 次の例は,ファイルから読み込んだストリームでMD5ダイジェスト値を生成するサンプルです。この例では変数filenameがファイル名を表しています。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 バイト列になっていることからもわかるように,これで得られたハッシュ値は表示には適しません。そのため,出力時には適当な形にフォーマットする必要があります。

 JAVA Developerより毎週Java Tipsをお届けしましょう。バックナンバーもよろしく。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.

ページトップに戻る