Функция хеширования Java MD5, дающая неправильный хеш

1

У меня проблема с функцией хеширования 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 (с которым моя треска взаимодействует).

Я бы очень признателен за любой свет, который можно пролить на него кем угодно, спасибо.

Теги:
md5

1 ответ

5
Лучший ответ

По умолчанию он не включает в себя ведущие нули, но вы можете легко проложить их самостоятельно:

String md5 = new BigInteger(1, encr.digest(pass.getBytes())).toString(16);
return String.format("%32s", md5).replace(' ', '0');
  • 0
    Хотел написать тот же ответ, но вы были быстрее, молодец :)
  • 0
    Спасибо за быстрый ответ, я не учел это. Это исправило это прямо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню