Моей текущей задачей работы является система для перевода C# в D. Это как часть для проекта прибыли разработать программную систему.
Из ваших комментариев видно, что вы хотели бы зашифровать файл, содержащий конфиденциальную информацию, с использованием схемы шифрования на основе пароля, с паролем, предоставленным пользователем при расшифровке- время. Конфиденциальная информация в этом случае также оказывается паролями, но на самом деле это не имеет значения. (Вероятно, вам следует обновить вопрос, чтобы прояснить его.)
Вы делаете правильные вещи, ваша проблема только в том, что провайдер шифрования Java SunJCE не поддерживает AES для шифрования на основе пароля. Вам необходимо использовать альтернативного провайдера, который: например, вы можете использовать провайдера Bouncy Castle с алгоритмом «PBEWITHSHA256AND128BITAES-CBC-BC»
. (Несмотря на причудливое название, Надувной Замок пользуется большим уважением).
Что касается "
Вы не должны хранить пароли в какой-либо форме, кроме соленых хэш-дайджестов .
Затем вы должны использовать систему разрешений операционной системы, чтобы сделать это таким образом, что файл хешированных паролей может быть прочитан только пользователем, который проверяет пароли.
Если у вас есть Java 6, все, что вам нужно, доступно. Прочтите этот вопрос и посмотрите на принятые ответ для образца кода. Поскольку вы хотите зашифровать файлы, сгенерированный iv должен быть добавлен к файлу, в который вы пишете зашифрованный текст, чтобы он был доступен во время дешифрования.