Вот ответ на вопрос, который вы задали.
public void checkString(String strPass) {
if (strPass.equals("admin") || strPass.equals("L4989C")) {
// do something else
} else {
String s = MD5.crypt(strPass);
// code to check the string s with the data base value.
}
Однако я думаю, что у вас может быть проблема с вашим MD5.crypt()
методом.Если этот метод выполняет следующие действия:
- Используйте
String.getBytes(...)
для преобразования строки в byte[]
. - Рассчитайте контрольную сумму MD5 байтов, предоставив вам еще одну
byte[]
. - Используйте
new String(byte[], ...)
для преобразования зашифрованных байтов в строку.
Проблема заключается в том, что последний шаг, скорее всего, с потерями ... и неправильный.Большинство кодировок символов имеют байты или последовательности байтов, которые не отображаются на допустимые символы.Если конструктор String
встречает один из них во входном байтовом массиве, он либо отбрасывает его, либо сопоставляет его с каким-либо символом, который обозначает не отображаемый символ (например, '?').Конечным результатом является то, что контрольная сумма хранится неправильно.Чтобы справиться с этим, вы должны либо сохранить форму контрольной суммы byte[]
в базе данных в виде большого двоичного объекта, либо закодировать ее в шестнадцатеричном или base64 или как угодно.
Это поможет понять вашувопрос, если вы предоставили исходный код для вашего метода MD5.crypt ... или сказали нам, из какой он библиотеки.