SecretKeyを使用して、自分のアプリケーションの機密データを暗号化します。現在私は秘密鍵をBase64でエンコードされた形式でDBまたはSharedPrefsに保管していますが、これはルートされた電話機にSecretを格納する安全な場所ではありません。したがって、私は秘密鍵をAndroid KeyStoreに移したいと思う。私が直面している問題は、Googleからthis sample codeを試すと、SecretKeyの代わりにPrivateKeyが必要になることです。 SecretKeyをKeyStoreに保存し、後で使用できるようにフェッチする方法を理解できませんでした。Android:KeyStoreにSecretKeyを保存する
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();
}
私は、コードの上にしようとすると、それが例外をスローOperation not supported because encoding is unknown
:私はこれを試してみました。
サンプルコードはすごく役立ちます。
次を試してください:keyStore.setEntry( "Key"、secretKeyEntry、null); –
「第2引数のタイプが間違っています」と言ってコンパイルしません。 「SecretKeyEntry」が見つかりました。必須の 'byte []' 'です。 – Rajkiran
'setKeyEntry'を 'setEntry'に変更してください。 –