No inserte una clave codificada en su aplicación; eso proporciona poco más que una ofuscación trivial para cualquier persona que realice ingeniería inversa en su aplicación.
Para generar una clave para el cifrado, use un algoritmo de derivación de claves como PBKDF2 , que esencialmente realiza cientos de rondas de una función hash en una contraseña, combinando los resultados para producir una clave segura. Para ayudar a entender por qué necesita un algoritmo de derivación de claves, eche un vistazo a esta otra respuesta .
Los beneficios de PBKDF2 son:
- Cantidad configurable de rondas, para adaptar la velocidad de cálculo a su dispositivo mientras se mantiene un margen de seguridad razonable contra la fuerza bruta.
- Seguridad comprobable, es decir, es al menos tan potente como la función hash subyacente.
- Puede producir cualquier clave de tamaño.
- Fácil de implementar (ya hay una implementación de Java para usted)
Esencialmente, permite que el usuario ingrese su contraseña, luego calcula la clave con PBKDF2 y luego la usa para descifrar / cifrar los datos.
Ahora, en lo que respecta al cifrado real, sugiero encarecidamente que te limites a algo fácil si no has tratado con criptografía antes. Los cifrados de bloque deben usarse en un modo de operación y requieren un vector de inicialización (IV) para estar seguros. Hay muchos detalles de la implementación que deben ser exactamente correctos para que realmente estén seguros, por lo que en este caso, sugiero leer otras preguntas para entenderlos mejor.