问题描述
我正在使用 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 (将#修改为@)