Encriptación de Android

Estoy trabajando en una aplicación android, y necesito usar el cifrado para un aspecto de ella. Soy realmente indiferente a qué algoritmo que uso (AES, DES, RSA, etc …). Soy consciente de que Java tiene un paquete de cifrado, pero no estoy familiarizado con él en absoluto. ¿Puede alguien publicar un ejemplo sobre cómo hacer una función de cifrado / descifrado?

La biblioteca java AES tiene una falla en ella que permite, en las circunstancias adecuadas, escuchar para descifrar los paquetes enviados. Véase Padding Oracle Exploit Tool vs Apache MyFaces .

Dicho esto, echa un vistazo a esta pregunta SO Java 256bit AES Encryption .

Bouncy Castle AES EJEMPLO robado de: http://www.java2s.com/Code/Java/Security/EncryptionanddecryptionwithAESECBPKCS7Padding.htm

 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; public class MainClass { public static void main(String[] args) throws Exception { Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); byte[] input = "www.java2s.com".getBytes(); byte[] keyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }; SecretKeySpec key = new SecretKeySpec(keyBytes, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC"); System.out.println(new String(input)); // encryption pass cipher.init(Cipher.ENCRYPT_MODE, key); byte[] cipherText = new byte[cipher.getOutputSize(input.length)]; int ctLength = cipher.update(input, 0, input.length, cipherText, 0); ctLength += cipher.doFinal(cipherText, ctLength); System.out.println(new String(cipherText)); System.out.println(ctLength); // decryption pass cipher.init(Cipher.DECRYPT_MODE, key); byte[] plainText = new byte[cipher.getOutputSize(ctLength)]; int ptLength = cipher.update(cipherText, 0, ctLength, plainText, 0); ptLength += cipher.doFinal(plainText, ptLength); System.out.println(new String(plainText)); System.out.println(ptLength); } } 

Mira mi respuesta aquí codificación de base de datos de Android . Contiene 2 archivos que puede incluir en cualquiera de sus aplicaciones que requieran almacenamiento de datos para ser cifrado.

Me gustaría también echa un vistazo a Ocultar para ver si se ajusta a su factura. Tiene una API fácil de usar que abstrae los detalles criptográficos: https://github.com/facebook/conceal/

  • Acceso exclusivo al micrófono en Android
  • Construcción de BoringSSL y Conscrypt y agrupación con Android apk
  • Proteger una API REST para su uso por clientes Android
  • Protección de las claves de twitter en Android
  • Instalación / Acceso a Certs para VPN / WIFI mediante programación en Android
  • ¿Vulnerabilidades en la caché de la clave ofuscada? Licencias de Android
  • Uso de un certificado autofirmado para crear una conexión cliente-servidor segura en android
  • ¿Cómo puedo validar un android.net.http.SsLCertificate con un X509TrustManager?
  • ¿No debería Android StoreManager almacenar símbolos de OAuth en una base de datos por aplicación / UID?
  • ¿Cómo debo codificar para resistir la "piratería con un solo clic"?
  • Prácticas recomendadas (lo mejor para Android): autenticar a un usuario con acceso a Facebook o Google
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.