2016-07-25 4 views
-1

зашифровать пароль, используя этот кодПароль шифрования

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 

он всегда будет выходной фал se. Я не понимаю, почему. Спасибо за ваше время

+0

Прежде всего, SHA-512 является хеш-функцией, которая не является обратимой. Шифрование, с другой стороны, является обратимым. –

+0

Как вы создали «5sg7KCrrLgIoRFlXIcwAu9pHyyRTfBd5 + buE8EA54Wdua6hXPliNoQUlEOOqCjKp5Vh5riKwwtYh/nNvwKPoX4uw =="? Он не имеет допустимой длины Base64 и поэтому длиннее SHA-512. –

+1

Вы не должны использовать простую хэш-функцию для защиты паролей пользователя. Вам нужно использовать сильную схему хэширования, такую ​​как PBKDF2, bcrypt, scrypt и Argon2. Обязательно используйте высокий коэффициент затрат/итераций. Обычно выбирается стоимость, так что одна итерация занимает не менее 100 мс. Подробнее: [Как безопасно использовать хэш-пароли?] (Http://security.stackexchange.com/q/211/45523) –

ответ

1

Вы должны прочитать о хэшировании ...

В хэширования, если вы попытаетесь кодирующей строка сказать «привет» каждый раз, когда вы получите другой результат, хотя вы кодирующая ту же строку .. .

попробовать Фолля ..

for(i=1;i<10;i++) 
    System.out.println(encrypt("password")); 

вы получите 9 дифф results..but еще они сопоставимы

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

+0

Это потому, что каждый раз, когда генерируется другая соль. –

Смежные вопросы