1 回答
TA贡献1828条经验 获得超3个赞
有几种方法可以做到这一点。假设您需要加密用户的数据,有两种方法。
第一种方式:密钥只能通过生物识别解锁,用户每次想要使用密钥时都必须通过生物识别进行身份验证。
使用KeyGenParameterSpec、 with
setUserAuthenticationRequired(true)
和 来创建密钥setUserAuthenticationValidityDurationSeconds(-1)
当用户打开您的应用程序时,调用
BiometricPrompt#authenticate(CryptoObject)
当 时
onAuthenticationSucceeded()
,您现在可以解密数据
第二种方式:密钥可以通过生物识别或密码/图案/密码解锁,并在t
上次生物识别/凭证解锁后的时间内重复使用。每当用户解锁键盘锁或设置凭据屏幕时,这些按键就会为您的应用程序解锁。
使用KeyGenParameterSpec、
setUserAuthenticationRequired(true)
和 来创建密钥setUserAuthenticationValidityDurationSeconds(t>0)
。当用户打开您的应用程序时,使用
BiometricPrompt#authenticate()
调用setDeviceCredentialAllowed(true)
。请注意,在这种情况下,您不需要将密钥库操作包装到 a 中CryptoObject
。当 时
onAuthenticationSucceeded()
,将用户发送到您的应用程序当您需要访问加密信息时,只要自上次用户认证以来的持续时间小于 即可使用密钥
t
。如果已经结束t
,尝试使用密钥将导致UserNotAuthenticatedException
,您应该提示用户再次进行身份验证并转到步骤 2。
添加回答
举报