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.
- Cómo bloquear genymotion?
- INSTALL_FAILED_NO_MATCHING_ABIS en GenyMotion
- Tablas de material de Android 5.0 con barra de herramientas
- MEDIA_PROJECTION_SERVICE no es válido en la llamada a getSystemService ()
- ¿Barra de navegación transparente para la aplicación 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
- Desactivar temporalmente la animación en Lollipop CheckBox
- ¿Cómo comunicarse entre las aplicaciones en el propietario del perfil y el dispositivo en android lollipop?
- Permiso de escritura de la tarjeta SD de Android mediante SAF (Storage Access Framework)
- Estilo de un widget SearchView mediante la biblioteca de soporte v21
- Lolipop dispositivo no se abre en genymotion
- No hay sombra por defecto en la barra de herramientas?
- Android: barra de herramientas y barra de estado como objetos compartidos con cambios de contenido
- El cajón de navegación semi-transparente sobre la barra de estado no funciona
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(); }
- NoSuchMethodError: No hay método virtual removeOnPageChangeListener
- Cómo encender la linterna y la cámara frontal al mismo tiempo en android