Я делаю шифрование файлов на основе паролей в Java; Я использую AES в качестве основного алгоритма шифрования и PBKDF2WithHmacSHA1
для получения ключа из комбинации соли и пароля с использованием следующего кода (который я получил от другого щедрого плаката на этом сайте).
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec ks = new PBEKeySpec(password,salt,1024,128);
SecretKey s = f.generateSecret(ks);
Key k = new SecretKeySpec(s.getEncoded(),"AES");
Я разделяю соль, пользователь вводит свой пароль на каждом конце, и шифрование и дешифрование работают нормально:-) Моя проблема в том, что я хотел бы проверить, правильно ли введен пароль, прежде чем приступать к ( потенциально долго) процесс дешифрования. Я знаю, что спецификация PBKD включает необязательное значение проверки в 2 байта, но я не уверен, как сгенерировать это значение, используя описанный выше подход. Поддерживает ли Java поддержку этого или нет, что было бы безопасной альтернативой?
Спасибо за ваше время.