У меня проблема с функцией хеширования Java md5, которая не возвращает правильное значение. Для большинства значений оно возвращает правильное значение, однако я нашел один пример ввода с неправильным выводом.
Мой код:
public String hash(String pass) throws Exception
{
encr = MessageDigest.getInstance("MD5");
return new BigInteger(1, encr.digest(pass.getBytes())).toString(16);
}
Это возвращает правильный ответ для большинства примеров, которые я пробовал, таких как хеш ("beep") → "1284e53a168a5ad955485a7c83b10de0", hash ("hello") → "5d41402abc4b2a76b9719d911017c592" и т.д....
Затем возникает проблема: hash ("dog") → "6d80eb0c50b49a509b49f2424e8c805" вместо "06d80eb0c50b49a509b49f2424e8c805", который у меня есть из нескольких онлайн-генераторов md5, а также генератор psql md5 (с которым моя треска взаимодействует).
Я бы очень признателен за любой свет, который можно пролить на него кем угодно, спасибо.
По умолчанию он не включает в себя ведущие нули, но вы можете легко проложить их самостоятельно:
String md5 = new BigInteger(1, encr.digest(pass.getBytes())).toString(16);
return String.format("%32s", md5).replace(' ', '0');