Можно ли восстановить хешированный пароль PBKDF2?

Используя только классы 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();
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
819
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Нет, невозможно восстановить пароль с помощью алгоритма хеширования паролей, такого как PBKDF2. Тот факт, что он необратим, является одной из основных причин использования такого алгоритма.

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

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

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