我正在使用android Biometrix库进行人脸和指纹验证。当只有FaceID被注册并且我试图创建秘密密钥时IllegalStatException:必须注册至少一个生物特征才能创建需要用户身份验证的密钥">
我正在尝试创建类似的secretKey
try {
mKeyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME,
KeyProperties.PURPOSE_ENCRYPT |
KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
// Require the user to authenticate with a fingerprint to authorize every use
// of the key
.setUserAuthenticationRequired(true)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.build());
secretKey = mKeyGenerator.generateKey();
} catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException
| CertificateException | IOException e) {
Toast.makeText(this,"Create Key "+ e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
当指纹被注册时,代码运行良好。只有在FaceId已注册时才会发生这种情况。我在这里错过了什么?
这里有问题。这一切都与.setUserAuthenticationRequired(true)
的设置有关
如果在生成密钥时将该密钥设置为true
,则意味着必须注册至少一个安全的生物特征/解锁针/模式。由于密钥被设置为true
,并且只存在不安全的身份验证方法,因此错误At least one biometric must be enrolled to create keys that require user authentication
被抛出
注意:到目前为止,三星的Face ID被认为是不安全的。这就是上述问题的原因