title: Encrypt and Decrypt with AES ECB mode 'BadPaddingException' in some cases
body: <p>In android/java app </p>
  
  <pre><code>   public static void setKey(String myKey) {
  
          MessageDigest sha = null;
          try {
              key = new byte[]{(byte) '5', (byte) 'F', (byte) '8', (byte) 'p', (byte) 'J', (byte) 't', (byte) 'v', (byte) 'U', (byte) 'm', (byte) 'q', (byte) 'k', (byte) '7', (byte) 'A', (byte) 'M', (byte) 'v', (byte) 'b', (byte) 'q', (byte) 'o', (byte) 'H', (byte) 'M', (byte) '9', (byte) 'a', (byte) 'p', (byte) '4', (byte) '9', (byte) 'm', (byte) 'c', (byte) 'u', (byte) 'u', (byte) '5', (byte) 'B', (byte) 'X'};
              System.out.println(new String(key, "UTF-8"));
              secretKey = new SecretKeySpec(key, "AES");
          } catch (UnsupportedEncodingException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
  
  
      public static String encrypt(String strToEncrypt) {
          try {
              Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
              cipher.init(Cipher.ENCRYPT_MODE, secretKey);
              setEncryptedarr(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
              setEncryptedString(String.valueOf(Base64.encode(cipher.doFinal(strToEncrypt.getBytes("UTF-8")), Base64.DEFAULT)));
              //setEncryptedString(Base64.encodeBase64String(cipher.doFinal(strToEncrypt.getBytes("UTF-8"))));
          } catch (Exception e) {
              e.printStackTrace();
              System.out.println("Error while encrypting: " + e.toString());
          }
          return null;
      }
  
      public static String decryptbyte(byte[] strToDecrypt) {
          try {
              Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
              cipher.init(Cipher.DECRYPT_MODE, secretKey);
              setDecryptedarr(cipher.doFinal(strToDecrypt));
              System.out.println("encrypt : decropted size : " + getDecryptedarr().length);
              setDecryptedString(new String(cipher.doFinal(strToDecrypt)));
          } catch (Exception e) {
              System.out.println("Error wnhile decrypting: " + e.toString());
              e.printStackTrace();
          }
          return null;
      }
  
      public static String decrypt(String strToDecrypt) {
          try {
              Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
              cipher.init(Cipher.DECRYPT_MODE, secretKey);
              setDecryptedarr(cipher.doFinal(Base64.decode(strToDecrypt, Base64.DEFAULT)));
              setDecryptedString(new String(cipher.doFinal(Base64.decode(strToDecrypt, Base64.DEFAULT))));
  
          } catch (Exception e) {
              e.printStackTrace();
              System.out.println("Error while decrypting: " + e.toString());
  
          }
          return null;
      }
  </code></pre>
  
  <p>I am working on this code : <a href="http://aesencryption.net/" rel="noreferrer">http://aesencryption.net/</a>
  I use this snipped code is working well when use it in case of :
  encryptbyte and decryptbyte whitch take byte[] 
  and I test it it's result of encryption in this site <a href="http://aesencryption.net/" rel="noreferrer">http://aesencryption.net/</a></p>
  
  <p><strong>but i need it to decript data came from server (response is came string)
  and when I convert the String to byte[] the code always thraw exception :</strong>
  javax.crypto.IllegalBlockSizeException: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length**</p>
  
  <p>I think it's when covert the String to byte[] it change , if that what is the right way to convert .
  Advice please .</p>
  
  <p>This code thraw exception :</p>
  
  <pre><code>try {
      AES.setKey("");
      final String strToDecrypt = "tATTXSdXI4w0oiu/fzgpyA==";
      AES.decryptbyte(toBytes(strToDecrypt.toCharArray()));
  } catch (Exception ex) {
      ex.printStackTrace();
  }
  </code></pre>
  
  <p>this is the exception </p>
  
  <pre><code>01-21 15:24:55.861 15700-15700/ W/System.err: javax.crypto.IllegalBlockSizeException: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
  01-21 15:24:55.861 15700-15700/ W/System.err:     at com.android.org.conscrypt.NativeCrypto.EVP_CipherFinal_ex(Native Method)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at com.android.org.conscrypt.OpenSSLCipher.doFinalInternal(OpenSSLCipher.java:430)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at com.android.org.conscrypt.OpenSSLCipher.engineDoFinal(OpenSSLCipher.java:466)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at javax.crypto.Cipher.doFinal(Cipher.java:1340)
   01-21 15:24:55.861 15700-15700/ W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.app.ActivityThread.access$900(ActivityThread.java:177)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.os.Looper.loop(Looper.java:135)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5910)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
  01-21 15:24:55.861 15700-15700/ W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
  </code></pre>