我想使用Android KeyStore Provider(在Android 6及更高版本上)存储我的密钥。但是我无法理解一件事:当用户更改锁定屏幕的设置时,按键是否会被删除?
在对Android 6的更改列表中所述:
不需要静态加密的密钥将不再被删除 当安全锁定屏幕被禁用或重置时(例如,由用户 或设备管理员)。需要静态加密的密钥将 在这些事件中被删除。
什么是不需要加密的密钥?难道我应该不安全地在存储密钥之间进行选择(不加密),否则在用户更改设置时会被删除?
答案 0 :(得分:1)
使用API 23+上setAuthenticationRequired
上的KeyGenParameterSpec
生成需要用户身份验证的密钥:
KeyGenParameterSpec
.Builder(...)
.setUserAuthenticationRequired(requiresAuth)
...
.build()
并在API 19-22的setEncryptionRequired
上使用KeyPairGeneratorSpec
:
specBuilder = KeyPairGeneratorSpec.Builder(context)
if (requiresAuth) {
specBuilder.setEncryptionRequired()
}