Non incorporare una chiave codificata nella tua applicazione; questo fornisce poco più di una banale offuscazione per chiunque inversioni la tua applicazione.
Per generare una chiave per la crittografia, utilizza un algoritmo di derivazione chiave come PBKDF2 , che essenzialmente esegue centinaia di rounds di una funzione di hash su una password, combinando insieme i risultati per produrre una chiave sicura. Per capire perché hai bisogno di un algoritmo di derivazione chiave, dai un'occhiata a questa altra risposta .
I vantaggi di PBKDF2 sono:
- Numero di round configurabile, per adattare la velocità di calcolo al tuo dispositivo mantenendo un ragionevole margine di sicurezza contro la forza bruta.
- Sicurezza garantita, vale a dire almeno strong quanto la funzione di hash sottostante.
- Può produrre qualsiasi tasto di dimensione.
- Facile da implementare (c'è già un'implementazione Java per te)
In pratica, lasci che l'utente inserisca la sua password, quindi calcola la chiave usando PBKDF2, quindi usa quella chiave per decodificare / crittografare i dati.
Ora, per quanto riguarda l'effettiva crittografia, suggerisco caldamente di attenermi a qualcosa di semplice se non hai già trattato la crittografia. I cifrari a blocchi devono essere utilizzati in una modalità operativa e richiedono un vettore di inizializzazione (IV) per essere sicuri. Ci sono molti dettagli di implementazione che devono andare esattamente nel giusto modo perché siano effettivamente sicuri, quindi in questo caso suggerisco di leggere varie altre domande qui per comprenderle ulteriormente.