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 示例有点密集,所以让我们分解一下正在发生的事情:
- 配置和生成加密密钥。在此步骤中,您可以指定只有
KeyGenParameterSpec.Builder.setAuthenticated(true)
. 时才能使用 Key
- 使用 cipherMode (encrypt/decrypt) 和步骤 1 生成的密钥初始化密码对象
- 使用步骤 2 中的密码初始化
FingerprintCrypto.CryptoObject()
- 启动指纹扫描仪并通过调用
FingerprintManager.authenticate()
传入第 3 步中的 CryptoObject
- 用户成功通过指纹验证。 Android OS 会将密钥中的 "authenticated" 位从 0 设置为 1。
- 现在密钥已经过使用验证,可以通过调用
Cipher.doFinal()
. 来使用它进行任何加密操作
如果您尝试通过将 null
传递给 FingerprintManager.authenticate()
来修改第 4 步,那么第 6 步将失败,因为您尚未通过使用密钥的身份验证。
希望对您有所帮助。
在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 示例有点密集,所以让我们分解一下正在发生的事情:
- 配置和生成加密密钥。在此步骤中,您可以指定只有
KeyGenParameterSpec.Builder.setAuthenticated(true)
. 时才能使用 Key
- 使用 cipherMode (encrypt/decrypt) 和步骤 1 生成的密钥初始化密码对象
- 使用步骤 2 中的密码初始化
FingerprintCrypto.CryptoObject()
- 启动指纹扫描仪并通过调用
FingerprintManager.authenticate()
传入第 3 步中的 CryptoObject
- 用户成功通过指纹验证。 Android OS 会将密钥中的 "authenticated" 位从 0 设置为 1。
- 现在密钥已经过使用验证,可以通过调用
Cipher.doFinal()
. 来使用它进行任何加密操作
如果您尝试通过将 null
传递给 FingerprintManager.authenticate()
来修改第 4 步,那么第 6 步将失败,因为您尚未通过使用密钥的身份验证。
希望对您有所帮助。