title: AES 256 Encryption Issue
body: <p>The following code perfectly implements AES-128 encryption/decryption.</p>
  
  <pre><code>public static void main(String[] args) throws Exception
  {
      String input = JOptionPane.showInputDialog(null, "Enter your String");
      System.out.println("Plaintext: " + input + "\n");
  
      // Generate a key
      KeyGenerator keygen = KeyGenerator.getInstance("AES");
      keygen.init(128); 
      byte[] key = keygen.generateKey().getEncoded();
      SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
  
      // Generate IV randomly
      SecureRandom random = new SecureRandom();
      byte[] iv = new byte[16];
      random.nextBytes(iv);
      IvParameterSpec ivspec = new IvParameterSpec(iv);
  
      // Initialize Encryption Mode
      Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
      cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivspec);
  
      // Encrypt the message
      byte[] encryption = cipher.doFinal(input.getBytes());
      System.out.println("Ciphertext: " + encryption + "\n"); //
  
      // Initialize the cipher for decryption
      cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivspec);
  
      // Decrypt the message
      byte[] decryption = cipher.doFinal(encryption);
      System.out.println("Plaintext: " + new String(decryption) + "\n");
  }
  </code></pre>
  
  <p>When I want to use AES-256, I thought that can be done by just modifying <code>keygen.init(256);</code> and <code>byte[] iv = new byte[32];</code>, however this becomes error (Exception in thread "main" java.security.InvalidKeyException: Illegal key size)! Can someone explain why error occurs when I made these two modification and what should I do. Thank you guys :)</p>