俺の開発研究所

Ruby on Rails、Linux、Windowsを中心にIT技術系の備忘録とか。よく忘れるので。

*

Javaのメッセージダイジェストで文字列を暗号化(ハッシュ化)

      2014/08/31

Javaで文字列を暗号化(ハッシュ化)する場合、「メッセージダイジェスト」というものを使用するようだ。

メッセージダイジェスト」とは、一方向ハッシュ関数とも呼ばれ、任意の文字列から固定長の擬似乱数(ハッシュ値)を生成するアルゴリズムのことらしい。

実際にやってみた。

スポンサード リンク

Javaのメッセージダイジェスト

使用するクラス名は、「MessageDigest」。

そのままで分かりやすい。

コーディングは以下のようになる。

なお、メッセージダイジェストで生成されたハッシュ値はbyte配列なのだが、それだと人間に優しくないし、DBに格納する時に少し面倒かなと思い、16進数の文字列に変換する(+α負の数は正の数へ)メソッドにした。

本来なら、文字列に変換せずに「isEqual」メソッドで2つのハッシュ値が等しいか確認するみたい。

暗号化アルゴリズムは「SHA-1」や「MD5」などが指定できるが、これらでは突破される脆弱性があるらしく「SHA-256」以上が推奨されているようです。

呼び出し用メソッド

呼び出し用メソッドはこんな感じです。

コマンドライン引数を渡しています。

実行結果

「SHA-256」のハッシュ値の文字列長は、どんな長さの文字列を与えても64桁であった。

セキュリティ関係を勉強せなー。

GitHub(ソースはコチラで公開中)

Javaのメッセージダイジェストテストクラス

参考サイト

http://ja.wikipedia.org/wiki/MD5

MD5 – Wikipedia

Java 入門 | メッセージダイジェスト

MessageDigest (Java Platform SE 6)

 - Java