#java #encryption
#java #шифрование
Вопрос:
Используя классы PBEKeySpec
и SecretFactory
только, и зная salt
, и coded
есть ли способ расшифровать coded
для восстановления password
?
public static byte[] encodePassword(char[] password, byte[] salt) {
PBEKeySpec spec = new PBEKeySpec(password, salt, ITERATIONS, KEY_LENGTH);
Arrays.fill(password, Character.MIN_VALUE);
try {
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
byte[] coded = skf.generateSecret(spec).getEncoded();
return coded;
} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
throw new AssertionError("Error while hashing a password: " e.getMessage(), e);
} finally {
spec.clearPassword();
}
}
Комментарии:
1. techsolvency.com/passwords/dehashing-reversing-decrypting
Ответ №1:
Нет, невозможно восстановить пароль с помощью алгоритма хэширования пароля, такого как PBKDF2. Тот факт, что он необратим, является одной из основных причин использования такого алгоритма.
Ответ №2:
вы «могли бы» ввести пароль методом перебора, если знаете ключ и соль, но это «заняло бы» много времени.
одностороннее шифрование — это причина, по которой вы не можете «восстановить» свой пароль на многих сайтах, только сбросить, и это рекомендуемый метод хранения паролей и сравнения закодированных строк при входе в систему.