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?
- ¿Qué problemas de seguridad puede causar SendBroadcast y qué es un enfoque mejor?
- Seguridad de PubNub contra una ingeniería inversa de una aplicación android
- ¿Cómo la emulación de tarjeta basada en software (HCE) garantiza la seguridad NFC?
- ¿Cómo guarda de forma segura una orden en la nube, si no puede verificar el pago desde la nube?
- ¿Cómo verifica facebook la autenticidad de la aplicación con hash clave?
- ¿Hay análogos javax.smartcardio en Android?
- Almacenar el secreto del cliente de forma segura
- Pregunta sobre la seguridad del depurador
- XmlHttpRequest problema de publicación doble en Android
- ¿Qué es APPKEY en Truecaller API?
- Android 4.3: ¿Cómo puedo comprobar si el usuario tiene activado el bloqueo?
- ¿El proveedor de Sun PKCS # 11 es compatible con Android?
- SDK para Android: ¿Cómo comprobar el facebook la tecla Hash?
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/
- Cambiar dibujable basado en tema
- ¿Cómo diseñar el NavigationView de la biblioteca de soporte de diseño?