Javaのハッシュ値を取得するサンプルです。
目次
サンプル | ハッシュ値とは |
Apache Commons Codecの取得方法 | |
SHA-256のサンプル | |
MD5のサンプル |
ハッシュ値とは
ハッシュ値のイメージ:fdb481ea956fdb654afcc327cff9b626966b2abdabc3f3e6dbcb1667a888ed9a |
このサンプルでは、Apache Commons CodecのDigestUtilsでハッシュ値を求めます。
ハッシュ値は、文字列からハッシュ値へ変換した場合、そのハッシュ値から元の文字列に戻すことはできないという特徴があります。
使用例としてWEBシステムでユーザが入力したパスワードをハッシュ値にしてDBに保存し
再度ユーザがログインした時、入力されたパスワードをハッシュ値にしてDBにあるハッシュ値と比較し確認する等あります。パスワードをDBにそのまま保存するより良くなります。
また通常はソルト(salt:塩)を使用します。ソルトとは、元のデータに任意の文字列を付加してからハッシュ値にすることでセキュリティの強度を高めます。
さらに安全性を高める場合は、ストレッチング(ハッシュ値の計算を繰り返し行う)を行います。
以下は、Apache Commons CodecのDigestUtilsクラスのリンクです。
http://commons.apache.org/proper/commons-codec/apidocs/index.html
Apache Commons Codecの取得方法
1.Mavenで取得する場合
pom.xmlの<dependencies>の間に以下のコードを追加します。
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
Mavenで取得する手順は、以下を参照願います。
Eclipse Mavenでjarを取得(Java)
2.jarファイルで取得する場合
MavenRepositoryのサイトから直接jarファイルを取得することもできます。
https://mvnrepository.com/artifact/commons-codec/commons-codec
上記リンクから、Versionの数値をクリックして、「Files」の横にある「jar」をクリックするとjarファイルがダウンロードされます。
ダウンロード完了後、jarファイルをクラスパスに追加します。
Eclipse jarファイルをクラスパスに設定する方法
SHA-256のサンプル
SHA-256は、256bitのハッシュ値(64桁)を出力します。よく使用されています。256以上が推奨です。
package test1;
import org.apache.commons.codec.digest.DigestUtils;
public class Test1 {
public static void main(String[] args) {
String str1 = DigestUtils.sha256Hex( "あいうえお" );
System.out.println(str1);
//fdb481ea956fdb654afcc327cff9b626966b2abdabc3f3e6dbcb1667a888ed9a
String str2 = DigestUtils.sha256Hex( "あいうABC123" );
System.out.println(str2);
//eac7b740f6b015b37fcf86d3c7ca404caa84d1ab4ea2d9974d4ad0d410f38b9a
}
}
MD5のサンプル
MD5は、128bitのハッシュ値(32桁)を出力します。安全性は低いです。
package test1;
import org.apache.commons.codec.digest.DigestUtils;
public class Test1 {
public static void main(String[] args) {
String str1 = DigestUtils.md5Hex( "あいうえお" );
System.out.println(str1);
//86deb27a32903da70a7b2348fcf36bc3
String str2 = DigestUtils.md5Hex( "あいうABC123" );
System.out.println(str2);
//5275d678c4f68d2c2ff37c25c842378e
}
}
関連の記事