Encriptación de Android "bloque pad bloqueado" excepción

En este código, esta línea está causando una excepción:

clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT));

javax.crypto.BadPaddingException: pad block corrupted

Conseguí el código de: http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/

¿Algunas ideas?

  private String decrypt (String encryptedText) { byte[] clearText = null; try { SecretKeySpec ks = new SecretKeySpec(getKey(), "AES"); Cipher c = Cipher.getInstance("AES"); c.init(Cipher.DECRYPT_MODE, ks); clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT)); return new String(clearText, "UTF-8"); } catch (Exception e) { return null; } } 

Detalles: También lo estoy cifrando en el android

3 Solutions collect form web for “Encriptación de Android "bloque pad bloqueado" excepción”

Java + Android + Encryption + Exception significa sólo una cosa normalmente, alguien está usando la clase SecureRandom nuevo como una función de derivación clave. Esto falla cuando la implementación de SecureRandom de "SHA1PRNG" no se comporta como la implementación de Sun en Java SE. Especialmente si la semilla se añade al estado del generador de números aleatorios en lugar de la semilla que se utiliza como punto de partida del PRNG.

Básicamente, simplemente utilice SecretKey aesKey = new SecretKeySpec(byte[] keyData, "AES") lugar, o si inicia con una contraseña, pruebe a generar la clave utilizando PBKDF2.

El consejo de owlstead fue útil, pero para este caso al usar el código en

Atención a los desarrolladores de Android: Mantenga la seguridad de los datos de usuario http://www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/

Hice algunos cambios en el código que podrían ser útiles para otras personas en el futuro. He eliminado completamente el método getkey.

 private static String seed; /** * Encrypts the text. * @param clearText The text you want to encrypt * @return Encrypted data if successful, or null if unsucessful */ protected String encrypt(String clearText) { byte[] encryptedText = null; try { byte[] keyData = seed.getBytes(); SecretKey ks = new SecretKeySpec(keyData, "AES"); Cipher c = Cipher.getInstance("AES"); c.init(Cipher.ENCRYPT_MODE, ks); encryptedText = c.doFinal(clearText.getBytes("UTF-8")); return Base64.encodeToString(encryptedText, Base64.DEFAULT); } catch (Exception e) { return null; } } /** * Decrypts the text * @param encryptedText The text you want to encrypt * @return Decrypted data if successful, or null if unsucessful */ protected String decrypt (String encryptedText) { byte[] clearText = null; try { byte[] keyData = seed.getBytes(); SecretKey ks = new SecretKeySpec(keyData, "AES"); Cipher c = Cipher.getInstance("AES"); c.init(Cipher.DECRYPT_MODE, ks); clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT)); return new String(clearText, "UTF-8"); } catch (Exception e) { return null; } } 

I Reffred De esto: https://androidfreetutorial.wordpress.com/2017/03/14/android-encryptiondecryption-with-aes-algorithm/

Cambie a " AES " de " AES / ECB / PKCS7Padding ";

  • Múltiples montajes en un cuerpo o múltiples cuerpos?
  • Android añadiendo pie de página a ListView addFooterView ()?
  • ViewPager.setOffscreenPageLimit (0) no tiene ningún efecto en absoluto. ¿Cómo puedo cargar una página a la vez en un ViewPager?
  • Firebase getDownloadURL
  • ¿Está segura la manipulación de bytecode?
  • Cómo serializar / deserializar arrayList (Object)
  • ListView in Scroll Ver mi vista de desplazamiento se mueve a la parte superior de listview. ¿Cómo puedo evitar esto?
  • Conversión de una cadena de tiempo a la fecha
  • Java La importación com.google no se puede resolver
  • Audífonos para auriculares Jack
  • Cargar y mostrar un documento de palabra de MS en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.