谷歌MD5破解者(在java中)

时间:2015-03-26 12:02:43

标签: java android eclipse hash

我在下面找到Cracking Md5哈希的代码:(来自:aboulton.blogspot.com.tr

 package md5crack;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Adam Boulton - Using Google to crack MD5
 */
public class MD5Cracker {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        if(args[0] == null || args[0].isEmpty())
        {
            System.out.println("-= Google MD5 Cracker =-");
            System.out.println("-= Adam Boulton - 2010 =- ");
            System.out.println("Usage: MD5crack <hash>");
        }

        String hash = args[0];
        String url = String.format("https://www.google.com/search?q=%s", hash);

        try {
            URL oracle = new URL(url);
            URLConnection conn = oracle.openConnection();

            //keep Google happy, otherwise connection refused.
            conn.setRequestProperty("user-agent", "Mozilla/5.0 Windows NT6.1 WOW64 AppleWebKit/535.7 KHTML, like Gecko Chrome/16.0.912.63 Safari/535.7");

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                    conn.getInputStream()));

            String inputLine;

            while ((inputLine = in.readLine()) != null) {
                String[] words = inputLine.split("\\s+");

                for (String word : words) {
                    String wordHash = DigestUtils.md5Hex(word);
                    if (wordHash.equals(hash)) {

                        System.out.println("[*] Found: " + word);
                        System.exit(0);
                    }
                }
            }

            System.out.println("[!] No results.");
            in.close();

        } catch (IOException ex) {
            Logger.getLogger(MD5Cracker.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

但在这一行我有一个错误:

String wordHash = DigestUtils.md5Hex(word);

错误:     DigestUtils cannot be resolved

我该如何解决?

这是破解和查找解码MD5哈希的好方法或类吗?

我们如何在Android上优化使用它?

感谢。

2 个答案:

答案 0 :(得分:1)

您的计划不知道DigestUtils代表什么。

您需要导入它,或从appache公共jar下载codec并将其作为外部jar引用到您的项目中并随后导入

答案 1 :(得分:1)

  

...这是破解和查找解码MD5哈希的好方法或类?

它会有效吗?一般来说,可能不是。

有340,282,366,920,938,463,463,374,607,431,768,211,456可能的不同MD5哈希值。如果您有任意字符串或文档的MD5哈希值,那么在Google搜索结果中找到该哈希值的可能性就会非常小。

事实上,很明显Google的搜索引擎无法指出超过可能的MD5哈希值的微不足道的一小部分。根据{{​​3}},“大4”互联网公司估计2013年的存储容量约为1,200PB。这是因为存储所有可能的MD5哈希值太小了~10 20

但是,如果您可以确定一个用例,其中相关字符串和MD5哈希值之间的映射系统地在网页中发布,那么这种方法可能适用于那些字符串。如果有人在Google索引的页面中发布了映射,那么其中一个用例就是电子邮件地址的MD5哈希值。