Uygulamamdaki hassas verileri şifrelemek için SecretKey kullanıyorum. Şu anda SecretKey'i Base64 kodlu formatta DB veya SharedPrefs'te saklıyorum, bu gizli bir telefonda Secret saklamak için güvenli bir yer değil. Bu yüzden, SecretKey'imi Android KeyStore'a taşımak istiyorum. Karşılaştığım sorun, Google'dan this sample code'u denediğimde, SecretKey yerine bir PrivateKey bekler. SecretKey'imi KeyStore'da saklamak ve daha sonra kullanmak üzere almak için bir yol bulamadım.Android: SecretKey'i KeyStore'da saklayın
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();
}
Ben kodunun üzerinde çalıştığınızda, istisna Operation not supported because encoding is unknown
atar: Bu çalıştı.
Örnek kodlar çok yardımcı olabilir.
aşağıdakileri deneyin: keyStore.setEntry ("Key", secretKeyEntry, null); –
Yanlış 2. argüman türü söyleyerek derleme yapmaz. 'SecretKeyEntry' bulundu; gerekli 'bayt []' '. – Rajkiran
Lütfen 'setKeyEntry' öğesini 'setEntry' olarak değiştirin. –