No se puede descifrar el archivo cifrado en android lollipop

Tengo un mecanismo encrypt / decrypt para los archivos transferidos en mi app.

Este mecanismo funciona en todos los dispositivos y versiones de android anteriores a android 5.0-lollipop.

Aquí está el proceso de descifrado:

cipher.init(Cipher.DECRYPT_MODE, key); fileInputStream = new FileInputStream(file); cipherInputStream = new CipherInputStream(fileInputStream, cipher); byte[] fileByte = new byte[(int) file.length()]; int j = cipherInputStream.read(fileByte); return fileByte; 

Cifra y clave se generaron antes y se utilizan en toda la aplicación:

  key = new SecretKeySpec(keyValue, "AES"); try { cipher = Cipher.getInstance("AES"); } catch (Exception e) { e.printStackTrace(); } 

Cuando descifrar un archivo con unos 200.000 bytes en android 5.0, j (variable antes del retorno) es de unos 8000 que es mucho menor que 200000, mientras que en las versiones más antiguas de Android es exactamente igual a la longitud del archivo descifrado.

Encontré que el problema está en el descifrado. Porque puedo cifrar un archivo en android 5.0 y descifrarlo en las versiones android más antiguas, pero no viceversa. Sin embargo, estoy publicando el proceso de cifrado:

 cipher.init(Cipher.ENCRYPT_MODE, AESutil.key); cipherOutputStream = new CipherOutputStream(output, cipher); byte data[] = new byte[1024]; int count; while ((count = input.read(data)) != -1) { cipherOutputStream.write(data, 0, count); } 

Gracias por adelantado

Mi ejemplo de cifrado (L):

APPPATH es una cadena para mi directorio de aplicación en la tarjeta sd

 static void encrypt(File file, String pass) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException { FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(APPPATH+"/E_"+file.getName()); SecretKeySpec sks = new SecretKeySpec(pass.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, sks); CipherOutputStream cos = new CipherOutputStream(fos, cipher); int b; byte[] d = new byte[8]; while((b = fis.read(d)) != -1) { cos.write(d, 0, b); } cos.flush(); cos.close(); fis.close(); } static void decrypt(File file, String pass) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException { FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(APPPATH+"/D_"+file.getName()); SecretKeySpec sks = new SecretKeySpec(pass.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, sks); CipherInputStream cis = new CipherInputStream(fis, cipher); int b; byte[] d = new byte[8]; while((b = cis.read(d)) != -1) { fos.write(d, 0, b); } fos.flush(); fos.close(); cis.close(); } 
  • ¿Debemos diseñar para Android L tema material todavía?
  • Android- lollipop preview Nexus 5 no está empezando en el emulador de Genymotion
  • Recyclerview dolorosamente lento para cargar imágenes en caché de Picasso
  • android.view.InflateException: Línea de archivo XML binario # 7: Error al inflar la barra de herramientas de la clase
  • ¿Qué hace TranslationZ realmente en Android?
  • AlarmManager no funciona en dispositivos Samsung en Lollipop
  • Android: la barra de calificación no es visible, sólo se hace visible al tocarla
  • Android L - Botón de acción flotante (FAB)
  • Instalación de la aplicación en el perfil administrado
  • Lollipop: botón desactivado -> ¿qué estilo?
  • Activity.startLockTask () ocasionalmente lanza IllegalArgumentException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.