android - 让 Android KeyStore 能够在恢复出厂设置后幸存下来

标签 android keystore reset

我正在使用 Android KeyStore 生成 key ,但在恢复出厂设置后该 key 被删除。 有办法避免这种情况吗? 这是我的代码 fragment :

if (keyStore.containsAlias(KEY_STORE_ALIAS)) {
    Log.e(TAG, "key exist");
else {
    KeyPairGenerator kpGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
    AlgorithmParameterSpec spec = null;
    spec = new KeyGenParameterSpec.Builder(KEY_STORE_ALIAS,
            KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
            .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
            .setRandomizedEncryptionRequired(true)
            .setUserAuthenticationRequired(false)
            .build();

        kpGenerator.initialize(spec);
        KeyPair kp = kpGenerator.generateKeyPair();
        Log.e(TAG, "generate new key");
}

最佳答案

Based on Android documentation

Use the Android Keystore provider to let an individual app store its own credentials that only the app itself can access.

当您从设备中卸载或删除应用程序时,与该应用程序关联的 KeyStore 提供程序实例将被删除。并且,显然在恢复出厂设置期间strong>您安装的所有应用程序都将被删除,因此这些应用程序的 KeyStore 实例也将被删除。

所以回答你的问题,

It is impossible to retain the Keys on Factory Reset

关于android - 让 Android KeyStore 能够在恢复出厂设置后幸存下来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68448386/

相关文章:

android - react-native 链接导致 Android settings.gradle 中的重复导入

Android - Facebook SDK 4.0.0 - 图片共享时不显示 ShareDialog

java - 当请求失败时,如何打印显示的状态代码并带有 toast ?

Android 设备不断与 adb/eclipse 断开连接

web-services - Spring WS 客户端——使用服务器和客户端证书进行身份验证

android - 在一天中的特定时间重置整数值

javascript - 如何通过 JavaScript 更改内容后重置网页?

spring-security - spring security中的客户端证书认证

java - 获取条目后出现 KeyStore EOFException

asynchronous - Verilog/VHDL - 如何避免在单个 always block 中重置数据寄存器?