Я делаю парольное шифрование файлов в 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 это или нет, что может быть безопасной альтернативой?
Спасибо за ваше время.