Шифрование пароля

Я шифрую пароль, используя этот код

 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 различных результатов.. но все же они сопоставимы

https://en.wikipedia.org/wiki/Cryptographic_hash_function

Другие вопросы по тегам