MD5 値の取得方法
メッセージダイジェストの取得は java.security.MessageDigest を使って簡単に可能です。
MessageDigest#getInstance(String algorithm) を使用してアルゴリズムを指定した MessageDigest のインスタンスを取得します。
アルゴリズム には MD5 の他 SHA-1 等有名なメッセージダイジェストは、ほとんど使用可能なようです。
byte 配列から MD5
byte 配列からメッセージダイジェストを取得する場合は非常に簡単で、MessageDigest#digest で取得可能です。 以下にコードのサンプルを書きます。
※パスワードの保存等で利用します。
MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] hash = digest.digest("hoge".getBytes());
InputStream から MD5
InputStram からメッセージダイジェストを取得する場合は、MessageDigest#update と MessageDigest#digest を併用しなければなりません。update ですべての Stream を読み込んだ後に digest で取得します。 公開されている
※アプリケーションの MD5 値を取得する時等に利用します。
InputStream in = new FileInputStream("C:/work/test.xls");
MessageDigest digest = MessageDigest.getInstance("MD5");
try {
byte[] buff = new byte[4096];
int len = 0;
while ((len = in.read(buff, 0, buff.length)) >= 0) {
digest.update(buff, 0, len);
}
} catch (IOException e) {
throw e;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
byte[] hash = digest.digest();