首页 > 解决方案 > MD5 哈希 Java 测验

问题描述

这个问题是我参加的一个测验的一部分。

问:通过哈希函数推送字符串很容易。往前走,往后走怎么样?这可能需要更多的力量。甚至可能是蛮力?下一个密码由三个字符组成 [az,AZ,0-9]。密码的 md5-hash 以 19acf8371f 开头。

import java.math.BigInteger;
import java.security.MessageDigest;

public class Festo {
    public static void main(String[] args) throws Exception {
        String number = "0123456789";
        int count = 1;
        MessageDigest md = MessageDigest.getInstance("MD5");
        for (int j = 65; j < 65 + 26; j++) {
            char val = (char) j;
            for (int k = 97; k < 97 + 26; k++) {
                char val1 = (char) k;
                for (int i = 0; i < number.length(); i++) {
                    String input = val1 + "" + val + i;
                    byte[] messageDigest = md.digest(input.getBytes());
                    BigInteger no = new BigInteger(1, messageDigest);
                    String hashtext = no.toString(16);
                    while (hashtext.length() < 32) {
                        hashtext = "0" + hashtext;
                    }
                    System.out.println(input + " " + hashtext + " " + count++);
                }
            }
        }
    }
}

此输出中未找到此哈希 (19acf8371f)。谁能指出这段代码有什么问题?

标签: javahash

解决方案


推荐阅读