title: javax.crypto.IllegalBlockSizeException : Input length must be multiple of 16 when decrypting with padded cipher
body: <p>I'm getting a decrypting error in java class:</p>
  
  <pre><code>javax.crypto.IllegalBlockSizeException : 
      Input length must be multiple of 16 when decrypting with padded cipher.
  </code></pre>
  
  <p>What can I do to solve this problem?</p>
  
  <p>UPDATE:</p>
  
  <p>I forgot to mention it is working once and when the second time im trying to execute it again its throwing the above mentioned error.</p>
  
  <pre><code>package com.tb.module.service;
  import java.security.Key;
  import java.security.spec.InvalidKeySpecException;
  
  import javax.crypto.Cipher;
  import javax.crypto.spec.SecretKeySpec;
  
  import sun.misc.*;
  
  /**
   * This class is used for encrypt and decrypt the  password field.
   *
   */
  public class PswdEnc {
  
      private static final String ALGO = "AES";
      private static final byte[] keyValue = new byte[] { 'T', 'h', 'e', 'B', 'e', 's', 't','S', 'e', 'c', 'r','e', 't', 'K', 'e', 'y' };
  
      public static String encrypt(String Data) throws Exception {
          Key key = generateKey();
          Cipher c = Cipher.getInstance(ALGO);
          c.init(Cipher.ENCRYPT_MODE, key);
          byte[] encVal = c.doFinal(Data.getBytes());
          String encryptedValue = new BASE64Encoder().encode(encVal);
          return encryptedValue;
      }
  
      public static String decrypt(String encryptedData) throws Exception {
          Key key = generateKey(); 
          Cipher c = Cipher.getInstance(ALGO);
          c.init(Cipher.DECRYPT_MODE, key);
          byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
          byte[] decValue = c.doFinal(decordedValue);
          String decryptedValue = new String(decValue);
          return decryptedValue;
      }
  
  
      private static Key generateKey() throws Exception {
          Key key = new SecretKeySpec(keyValue, ALGO);
          return key;
      }
  
  }
  </code></pre>