Мне стало очень скучно, поэтому я делаю экспериментальный Brute Forcer. Однако у меня есть некоторые проблемы с MD5. Я получаю два очень разных результата,
1aabac6d068eef6a7bad3fdf50a05cc8
-7d881f6ef28afe6a4bb78689e91f6e53
Первый действителен и равен dd, второй недействителен, даже если я уберу начальный дефис.
Я просматривал этот ответ и скорректировал то, что у меня было, на то, что решило мою основную проблему, однако я все еще становлюсь недействительным MD5s.
Мой код:
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 действительны?