我的应用程序使用Android 6.0指纹API保护Android KeyStore中的AES密钥。由于使用KeyGenParameterSpec
初始化了,因此只有在通过指纹传感器验证用户身份后才能使用存储的密钥setUserAuthenticationRequired(true)
。
当用户触摸传感器时,我从回调中获取了初始化的密码,并将onAuthenticationSucceeded(Cipher)
其用于解密。
除了在装有Android 6的三星手机上,此功能非常有效。当我尝试使用返回的密码时,三星手机有时会抛出android.security.KeyStoreException: Key user not authenticated
。因此,即使onAuthenticationSucceeded(Cipher)
Android KeyStore返回了密码,也认为用户未通过指纹传感器进行身份验证。
似乎当应用长时间不使用时,崩溃就会发生。当应用程序被蠕虫感染时,所有程序通常都能正常工作。
由于此错误是随机发生的,并且仅在Samsung手机上出现,因此似乎是由Android 6.0 KeyStore和FingerPrint API的Samsung实现内部的一些内部计时问题引起的。
编辑:在OnePlus和Acer手机中也遇到了此问题。
由于我不希望上述制造商能很快解决此问题,因此我将其设置KeyGenParameterSpec.setUserAuthenticationRequired(false)
为三星,OnePlus,华硕和其他一些设备来解决。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句