定期擦除 Android 密钥库密钥

问题描述

我正在使用 Android 的密钥库来实现我的 Android 应用程序的指纹解锁。因此,我使用 KeyGenerator 来创建密钥使用

            var _keyGen = KeyGenerator.GetInstance(KeyProperties.KeyAlgorithmAes,"AndroidKeyStore")
            KeyGenParameterSpec.Builder builder = new KeyGenParameterSpec.Builder(GetAlias(_keyId),KeyStorePurpose.Encrypt | KeyStorePurpose.Decrypt)
                .SetBlockModes(KeyProperties.BlockModeCbc)
                // Require the user to authenticate with biometry to authorize every use
                // of the key
                .SetEncryptionPaddings(KeyProperties.EncryptionPaddingPkcs7)
                .SetUserAuthenticationrequired(true);
            
            _keyGen.Init(
                builder
                .Build());
            _keyGen.GenerateKey();

当我稍后枚举商店中的别名时,我找到了我创建的密钥:

            _keystore.Load(null);
            var aliases = _keystore.Aliases();
            if (aliases == null)
            {
                og("KS: no aliases");
            }
            else
            {
                while (aliases.HasMoreElements)
                {
                    var o = aliases.NextElement();
                    Log("alias: " + o?.ToString());
                }
            }

虽然这在大多数设备上都能可靠运行,但某些设备(例如 Google Pixel 4a)似乎经常“丢失”密钥库中的密钥。在枚举上述别名时,不再列出任何键。我可以通过使用调试器更新我的应用程序来重现此行为(设置是保留 SharedPreferences 和应用程序数据,而我在其他设备上没有此行为)。

我可以做些什么来防止丢失钥匙?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)