Ich verwende eine SecretKey, um vertrauliche Daten in meiner Anwendung zu verschlüsseln. Derzeit speichere ich meinen SecretKey im Base64-kodierten Format in DB oder SharedPrefs, was kein sicherer Ort ist, um Secret auf einem gerooteten Telefon zu speichern. Daher möchte ich meinen SecretKey zu Android KeyStore verschieben. Das Problem, mit dem ich konfrontiert bin, ist, wenn ich versuche, this sample code von Google, ein PrivateKey statt SecretKey. Ich konnte keine Möglichkeit finden, meinen SecretKey in KeyStore zu speichern und für die spätere Verwendung zu laden. Ich versuchte dies:Android: Store SecretKey in 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();
}
Wenn ich oben Code versuchen, es löst eine Ausnahme Operation not supported because encoding is unknown
.
Jeder Beispielcode wäre eine große Hilfe.
versuchen Sie Folgendes: keyStore.setEntry ("Key", secretKeyEntry, null); –
Es wird nicht kompiliert und sagt 'Falscher 2. Argumenttyp. Gefunden 'SecretKeyEntry'; erforderte 'byte []' '. – Rajkiran
Bitte ändern Sie 'setKeyEntry' auf 'setEntry'. –