Возможно ли восстановить хэшированный пароль PBKDF2?

#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:

вы «могли бы» ввести пароль методом перебора, если знаете ключ и соль, но это «заняло бы» много времени.

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