Uso un SecretKey per crittografare i dati riservati nella mia applicazione. Attualmente sto memorizzando la mia SecretKey nel formato codificato Base64 in DB o SharedPrefs che non è un posto sicuro dove archiviare Secret su un telefono rooted. Quindi, voglio spostare la mia SecretKey a Android KeyStore. Il problema che sto affrontando è quando provo this sample code da Google, si aspetta un PrivateKey al posto di SecretKey. Non riuscivo a trovare un modo per memorizzare la mia SecretKey in KeyStore e recuperarla per un uso successivo. Ho provato questo:Android: Memorizza SecretKey nel KeyStore
private static void writeSecretKeyToKeystore(SecretKey secretKey, Context context) {
KeyStore keyStore = null;
try {
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
KeyStore.SecretKeyEntry secretKeyEntry = new KeyStore.SecretKeyEntry(secretKey);
keyStore.setKeyEntry("Key", secretKeyEntry.getSecretKey().getEncoded(), null);
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Quando provo sopra il codice, viene generata un'eccezione Operation not supported because encoding is unknown
.
Qualsiasi codice di esempio sarebbe di grande aiuto.
provare quanto segue: keyStore.setEntry ("Chiave", secretKeyEntry, null); –
Non verrà compilato, dicendo 'Wrong 2nd argument type. Trovato "SecretKeyEntry"; richiesto 'byte []' '. – Rajkiran
Per favore cambia "setKeyEntry" in "setEntry". –