Нужно ли мне передавать объект MessageDigest из реестра в логин?

Хорошо, я немного смущен. Я пытаюсь использовать MessageDigest для хранения своих паролей в базе данных в виде хэшей MD5, а затем извлекаю хэш, чтобы проверить пароль пользователя при попытке входа в систему.

Итак, когда пользователь регистрируется на сайте register.jsp, я использую этот код для преобразования его пароля (строка называется «пароль» в коде) в хэш (называемый «хэш-текст»):

MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(password.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(16);

while(hashtext.length() < 32 ){
  hashtext = "0"+hashtext;
}

Затем мне нужно управлять тем, как проверить пароль, введенный, когда пользователь пытается войти в систему. У меня есть еще одна страница: login.jsp, где я запускаю точно такой же код, как и выше, для введенного пароля и проверяю результат по хэшу, который я извлекаю из своей базы данных.

Однако это не работает, и я предполагаю, что это связано с тем, что создается новый объект MessageDigest (MessageDigest.getInstance("MD5");), и поэтому алгоритм работает по-другому.

Нужно ли мне убедиться, что в файле login.jsp используется тот же объект MessageDigest, что и в файле register.jsp?


person user752894    schedule 13.05.2011    source источник


Ответы (1)


Однако это не работает, и я предполагаю, что это связано с тем, что создается новый объект MessageDigest (MessageDigest.getInstance("MD5");), поэтому алгоритм работает по-другому.

Это неправда.


Нужно ли мне убедиться, что в файле login.jsp используется тот же объект MessageDigest, что и в файле register.jsp?

No.


Ваша проблема вызвана чем-то другим. Возможно, вы не сохранили хеш исходного пароля в БД, или не сравнили с хэшем введенного пароля, или вы сравниваете хеш на системе, которая использует другую кодировку по умолчанию на getBytes(). Проверьте фактические значения хэша, прежде чем делать выводы.

person BalusC    schedule 13.05.2011