2015-07-14 2 views
1

Мне очень скучно, поэтому я делаю экспериментальный Brute Forcer. Однако у меня проблемы с MD5. Я получаю две очень разные выходы,Java MessageDigest MD5 не возвращает ожидаемый результат

1aabac6d068eef6a7bad3fdf50a05cc8 
-7d881f6ef28afe6a4bb78689e91f6e53 

Первый корректны и dd, второй является недействительным, даже если удалить ведущую дефис.

Я смотрел this answer, и я скорректировал то, что у меня было, к тому, что решило мою основную проблему, однако я все еще получаю недопустимые MD5.

Мой код:

public boolean testValidity(String s) { 
    try { 
     MessageDigest md = MessageDigest.getInstance(name()); 
     byte[] hashDigest = md.digest(s.getBytes("UTF-8")); 
     String hash = String.format("%032x", new BigInteger(md.digest(s.getBytes("UTF-8")))); 
     System.out.println(hash); 
     return getCompare().equalsIgnoreCase(hash); 
    } catch (NoSuchAlgorithmException | UnsupportedEncodingException | NullPointerException e) { 
     e.printStackTrace(); 
     return false; 
    } 
} 

В вышеприведенном name() просто получает "MD5" и getCompare() получает хэш сравнить его с.

Мой вопрос в том, как я могу исправить свой код, чтобы убедиться, что все MD5 действительны?

ответ