title: AES-256 encryption with BouncyCastle Lightweight API
body: <p>I have written some (functional) AES encryption code using Java's built in encryption libraries, as follows, but I'd like to use a 256-bit key. However, I'd like to do this without the user having to install to Unlimited Strength Cryptography Policy files.</p>
  
  <p>Now, I've heard that using the BouncyCastle Lightweight API can allow me to do this, but unfortunately I'm having a great deal of trouble getting my head around it, and am struggling to fit any documentation that helps me.</p>
  
  <p>Here is a my current code, in which 'content' is the byte array to be encrypted:</p>
  
  <pre><code>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);
  </code></pre>
  
  <p>How would I go about re-implementing this with the BouncyCastle Lightweight API? Can anyone help me out and/or point me in the direction of some simple example code?</p>
  
  <p>I'm also interesting in any other solutions that allow 256-bit key AES encryption without the need for the user to install the unlimited strength policy files.</p>
  
  <p>Many thanks!</p>