128-битное шифрование данных с использованием Java

StackOverflow https://stackoverflow.com/questions/49226

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Этот пример приведен по адресу : http://forums.sun.com/thread.jspa?messageID=4164916

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top