Шифрование пароля
Я шифрую пароль, используя этот код
public static byte[] encrypt(String password) {
try {
BASE64Encoder be = new BASE64Encoder();
MessageDigest md = MessageDigest.getInstance("sha-512");
md.update(password.getBytes());
return md.digest();
} catch (NoSuchAlgorithmException e) {
}
return null;
}
И если я использую этот код для сравнения паролей, он отлично работает
if (encrypt(passwordField.getText()).compareTo(encrypt("password")) == 0 )
system.out.print("true")
else *false
и я хочу скрыть свой пароль, поэтому я использую консольный результат System.out.println(encrypt("Password"))
чтобы сравнить мой код выглядит так
if (encrypt(passwordField.getText()).compareTo("5sg7KCrrLgIoRFlXIcwAu9pHyyRTfBd5+buE8EA54Wdua6hXPliNoQUlEOOqCjKp5Vh5riKwwtYh/n"+
"NvwKPoX4uw==") == 0 )
system.out.print("true")
else *false
он всегда будет выводить false . я не понимаю почему. Спасибо за ваше время
1 ответ
Решение
Вы должны прочитать о хешировании...
При хешировании, если вы попытаетесь кодировать строку, скажите "привет" каждый раз, когда вы получите другой вывод, хотя вы кодируете одну и ту же строку...
попробуйте следующее.
for(i=1;i<10;i++)
System.out.println(encrypt("password"));
Вы получите 9 различных результатов.. но все же они сопоставимы