Quindi ecco la cosa, tutti dei tre approcci che hai menzionato sono intrinsecamente insicuri per un motivo principale: se / quando la tua app viene sottoposta a reverse engineering, la chiave privata sarà essere compromesso. Questa è la natura della memorizzazione di chiavi / informazioni sensibili nelle app e non c'è nulla che tu possa fare al riguardo. Questo ovviamente significa anche che se hai hash la chiave privata in un file, beh ora che la tua app è compromessa, il reverse-hashing sarà banale.
Ora che abbiamo capito tutto, ecco cosa puoi fare (nel contesto Android). Archivia la chiave privata in SharePreferences
(modalità privata) e usala come necessario. SharedPreferences in modalità privata si traduce in uno spazio di memoria separato in cui non è possibile accedere ai dati dall'utente o da altre app.
Ancora una volta, devo sottolineare che questo non è un modo sicuro per fare ciò perché i dispositivi possono essere radicati, app reverse engineering, ecc. Questo schema funziona quando hai un modo per recuperare da una violazione.
Ad esempio, se ogni utente della tua app (in qualche modo) ha una chiave privata separata e scopri che la chiave dell'utente X
è stata compromessa, beh, sarebbe semplicemente questione di aggiornare X
chiave privata dal server e sei sulla buona strada.