title: Getting "EVP_DecryptFinal_ex:wrong final block length" during decryption
body: <p>I followed this tutorial for encrypting and decrypting simple strings in android/java:</p>
  
  <p><a href="https://stackoverflow.com/questions/4319496/how-to-encrypt-and-decrypt-data-in-java">https://stackoverflow.com/questions/4319496/how-to-encrypt-and-decrypt-data-in-java</a>
  I made a Cryptography class:</p>
  
  <pre><code>public class Cryptography {
  
      public static SecretKey generateKey() throws NoSuchAlgorithmException {
          MessageDigest digest = MessageDigest.getInstance("SHA");
          digest.update("BhLKTyLoP YroUsRQT".getBytes());
          return new SecretKeySpec(digest.digest(), 0, 16, "AES");
      }
  
      public static byte[] encrypt(String message, SecretKey key) throws NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, NoSuchPaddingException, InvalidKeyException, UnsupportedEncodingException {
          Cipher aes = Cipher.getInstance("AES/ECB/PKCS5Padding");
          aes.init(Cipher.ENCRYPT_MODE, key);
          return aes.doFinal(message.getBytes());
      }
  
      public static String decrypt(byte[] cipherText, SecretKey key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
          Cipher aes = Cipher.getInstance("AES/ECB/PKCS5Padding");
          aes.init(Cipher.DECRYPT_MODE, key);
          return new String(aes.doFinal(cipherText));
      }
  
  }
  </code></pre>
  
  <p>I was able to encrypt method and gave me this:</p>
  
  <pre><code>Encrypted username: [B@52aff408 
  Encrypted password: [B@52aff6d8
  </code></pre>
  
  <p>However, when I use decrypt:</p>
  
  <pre><code>SecretKey secret = Cryptography.generateKey();
  Log.d("encryption", "Decrypted username: " + Cryptography.decrypt(encryptedUsername.getBytes(),secret)
                                  + " Decrypted password: " +  Cryptography.decrypt(encyptedPassword.getBytes(),secret));
  </code></pre>
  
  <p>It gives me the error:</p>
  
  <pre><code>03-25 15:22:23.461    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ java.lang.RuntimeException: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
  03-25 15:22:23.461    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.NativeCrypto.EVP_CipherFinal_ex(Native Method)
  03-25 15:22:23.461    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.OpenSSLCipher.doFinalInternal(OpenSSLCipher.java:398)
  03-25 15:22:23.461    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.OpenSSLCipher.engineDoFinal(OpenSSLCipher.java:434)
  03-25 15:22:23.461    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at javax.crypto.Cipher.doFinal(Cipher.java:1111)
  03-25 15:22:23.461    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at com.sblive.utils.Cryptography.decrypt(Cryptography.java:28)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at com.sblive.aufschoolbliz.GradeBookFragment$2.onClick(GradeBookFragment.java:99)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at android.view.View.performClick(View.java:4240)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at android.view.View$PerformClick.run(View.java:17721)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:730)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5103)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
  03-25 15:22:23.465    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
  03-25 15:22:23.469    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  03-25 15:22:23.469    2073-2073/com.sblive.aufschoolbliz W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
  </code></pre>