Шифрование AES-256 с помощью BouncyCastle Lightweight API - PullRequest
6 голосов
/ 04 марта 2012

Я написал некоторый (функциональный) код шифрования AES, используя встроенные библиотеки шифрования Java, как показано ниже, но я хотел бы использовать 256-битный ключ. Однако я хотел бы сделать это без необходимости установки пользователем файлов политики криптографии Unlimited Strength.

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

Вот мой текущий код, в котором 'content' - это байтовый массив для шифрования:

KeyGenerator kgen = KeyGenerator.getInstance("AES");
int keySize = 128;
kgen.init(keySize);
SecretKey key = kgen.generateKey();
byte[] aesKey = key.getEncoded();
SecretKeySpec aesKeySpec = new SecretKeySpec(aesKey, "AES");
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE, aesKeySpec);
byte[] encryptedContent = aesCipher.doFinal(content);

Как бы я решил реализовать это с помощью BouncyCastle Lightweight API? Кто-нибудь может мне помочь и / или указать мне какой-нибудь простой пример кода?

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

Большое спасибо!

1 Ответ

7 голосов
/ 05 марта 2012

Этот вопрос и ответ является полезной отправной точкой.

256-битная AES / CBC / PKCS5Padding с Bouncy Castle

Следующее лучшее место для поиска - это тестовый коддля LW API, а затем код провайдера JCE.Код провайдера JCE является оболочкой для библиотек LW, поэтому, если вы хотите знать, как это сделать, это лучшее место, чтобы увидеть его.

Под кодом провайдера JCE я имею в виду реализацию BC.

...