PE html>Java MD5ハッシュ化サンプル | MBTI研究所

Java MD5ハッシュ化サンプル

2019年9月17日

PHPでは簡単に出来たもののJavaでは何だか複雑だったのでメモ

 

 

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {

	public static void main(String[] args) throws NoSuchAlgorithmException {
		// TODO Auto-generated method stub
        String password = "abcd";

        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] hashInBytes = md.digest(password.getBytes(StandardCharsets.UTF_8));

        StringBuilder sb = new StringBuilder();
        for (byte b : hashInBytes) {
            sb.append(String.format("%02x", b));
        }
        System.out.println(sb.toString());
	}

}

 

ざっと説明すると

 

変数パスワードをMD5にハッシュ化し文字コードUTF-8のバイト型に変換

 

バイト型では人間には分かりづらいので16進数の32桁の我々が見慣れているMD5形式に変換し表示と言った所ですね

 

 

これをちょっと改造してMD5を解読するツールを作ってみました

 

MD5は解読不可能と言われていますが実際はあらかじめ作っておいた単語リスト(有名なリストはrockyouとかですね)をひとつずつMD5に変換して解読したいMD5形式のパスワードとその都度照らし合わせる方法などで一応解読することが出来ます

自分が作っておいて言うのはあれですが速度はかなり速いと思います

 

話が逸れましたが上記のコードをコピペして変数passwordの所に任意の値を入れるとハッシュ化した32桁の16進数が出てきます