128-битное шифрование данных с использованием Java - PullRequest
5 голосов
/ 08 сентября 2008

Мне нужно хранить некоторые конфиденциальные данные, зашифровывая их по крайней мере с 128-битным ключом. Я исследовал пакет javax.crypto и обнаружил, что существуют определенные имена шифров, например PBEWithMD5AndDES или PBEWithSHA1AndDESede, который обеспечивает шифрование до 56 бит и 80 бит (http://en.wikipedia.org/wiki/DESede).

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

Пожалуйста, дайте мне знать, если у вас есть идеи по этому поводу.

Ответы [ 6 ]

8 голосов
/ 08 сентября 2008

Использование Расширенный стандарт шифрования (AES). Он поддерживает ключи длиной 128, 192 или 256 бит.

Алгоритм прост. На веб-сайте Sun Java есть раздел , объясняющий, как выполнить шифрование AES в Java.

Из Википедии ...

... Продвинутый Стандарт шифрования (AES), также известный как Рейндаэль, блочный шифр принят в качестве стандарта шифрования в США правительство. Было проанализировано широко и в настоящее время используется во всем мире, как было с его предшественник, шифрование данных Стандарт (DES) ...

Так что, как правило, вы не должны использовать DES или его варианты, потому что он постепенно сокращается.

На данный момент лучше использовать AES. Есть и другие варианты, такие как Twofish , Blowfish и т. Д. Обратите внимание, что Twofish можно рассматривать как расширенную версию Blowfish.

4 голосов
/ 08 сентября 2008

В прошлом у меня был хороший успех с http://www.bouncycastle.org/ (у них также есть версия C #).

3 голосов
/ 08 сентября 2008

Вам необходимо скачать и установить файл политики JCE неограниченной силы для вашего JDK. Для JDK 6 он находится на http://java.sun.com/javase/downloads/index.jsp в самом низу.

2 голосов
/ 08 сентября 2008

Объединение 3 разных ответов дает то, что я считаю правильным ответом.

Загрузите библиотеки шифрования из Bouncycastle , затем вам необходимо загрузить «Политику неограниченной юрисдикции» из Oracle (файлы находятся внизу страницы загрузки). Обязательно прочтите Readme-файл о том, как его установить.

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

0 голосов
/ 08 сентября 2008

Спасибо, Майкл, после того, как я попробовал много вещей в JCE, я наконец-то остановился на Bouncycastle.

JCE поддерживает AES для шифрования и PBE для шифрования на основе пароля, но не поддерживает комбинацию обоих. Я хотел то же самое, и то, что я нашел в бодром замке.

Пример: http://forums.sun.com/thread.jspa?messageID=4164916

0 голосов
/ 08 сентября 2008

Я ни в коем случае не специалист по криптографии (так что примите это предложение с крошкой соли), но я использовал Blowfish и раньше, и я думаю, что вы можете использовать его для чего вам нужно. Существует также более новый алгоритм того же парня по имени Twofish .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...