Android CryptoObject 在指纹中的使用

Android CryptoObject usage in fingerprint

在Android指纹样本代码FingerprintDialog, the method that starts fingerprint hardware FingerprintManager#authenticate takes a parameter of FingerprintManager.CryptoObject。根据文档,它是 object associated with the call or null if none required。描述对我来说仍然不清楚。有人会解释我什么时候应该或不应该使用加密谢谢。

Android 示例中提供的 FingerprintDialog 示例有点密集,所以让我们分解一下正在发生的事情:

  1. 配置和生成加密密钥。在此步骤中,您可以指定只有 KeyGenParameterSpec.Builder.setAuthenticated(true).
  2. 时才能使用 Key
  3. 使用 cipherMode (encrypt/decrypt) 和步骤 1 生成的密钥初始化密码对象
  4. 使用步骤 2 中的密码初始化 FingerprintCrypto.CryptoObject()
  5. 启动指纹扫描仪并通过调用 FingerprintManager.authenticate()
  6. 传入第 3 步中的 CryptoObject
  7. 用户成功通过指纹验证。 Android OS 会将密钥中的 "authenticated" 位从 0 设置为 1。
  8. 现在密钥已经过使用验证,可以通过调用 Cipher.doFinal().
  9. 来使用它进行任何加密操作

如果您尝试通过将 null 传递给 FingerprintManager.authenticate() 来修改第 4 步,那么第 6 步将失败,因为您尚未通过使用密钥的身份验证。

希望对您有所帮助。