Java PBEWithMD5AndDES

Я использую шифрование на основе пароля. Моя первоначальная мысль заключалась в том, чтобы использовать AES для шифрования файла, который содержит пароли. Оказывается, шифрование на основе пароля не поддерживает AES. Он использует DES. AFAIK des небезопасен. Является ли PBEWithMD5AndDES достаточно надежным, чтобы засунуть мои данные или я должен искать другую реализацию?

3 ответа

Из ваших комментариев видно, что то, что вы хотели бы сделать, - это зашифровать файл, который содержит конфиденциальную информацию, используя схему шифрования на основе пароля, с паролем, предоставленным пользователем в режиме дешифрования. В этом случае конфиденциальная информация также является паролем, но это не имеет особого значения. (Вероятно, вы должны обновить вопрос, чтобы сделать это более понятным).

Вы поступаете правильно, ваша проблема в том, что поставщик криптографии Java SunJCE не поддерживает AES для шифрования на основе пароля. Вам нужно использовать альтернативный провайдер, который: например, вы можете использовать Bouncy Castle с алгоритмом "PBEWITHSHA256AND128BITAES-CBC-BC". (Несмотря на причудливое имя, замок Bouncy пользуется уважением).

Что касается "DES достаточно безопасен для моих данных", хорошо, если данные, которые вы защищаете, стоили бы менее чем примерно 10 000 долларов для злоумышленника, а затем в 2009 году он был, вероятно, достаточно безопасным. И в 2014 году, если ваши данные вообще будут шифроваться, ответ будет отрицательным.


Если у вас есть Java 6, доступно все, что вам нужно. Ознакомьтесь с этим question и посмотрите на принятый ответ для образца кода. Поскольку вы хотите шифровать файлы, генерируемый iv должен быть добавлен к файлу, который вы пишете зашифрованный текст, чтобы он был доступен во время расшифровки.


Вы не должны хранить пароли в любой форме, кроме salted хеш-дайджест.

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

licensed under cc by-sa 3.0 with attribution.