Мне очень скучно, поэтому я делаю экспериментальный 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 действительны?