我想存储敏感信息,例如登录 PIN。如今,有了EncryptedSharedPreferences (ESP),人们可以争辩说这就足够了。但是,假设我想提供使用Biometrics的可能性。这个谷歌示例向我们展示了如何使用BiometricPrompt.CryptoObject
数据加密和解密。
但这提出了一个问题:
我是否应该在不增加另一层安全性的情况下将 PIN 保存在 ESP 中?
如果是这样,生物识别提示将作为一种更快、更方便的方式来插入 PIN。我只需要倾听onAuthenticationSucceeded
忽略result: BiometricPrompt.AuthenticationResult
并假设用户已登录(或使用保存在 ESP 中的 PIN 值执行 API 登录)。CryptographyManager
如果我将 PIN 保存在 ESP 中,但通过( cryptographyManager.encryptData
/ )的加密提供了额外的安全层,cryptographyManager.decryptData
当用户手动插入 PIN 时我会遇到麻烦,因为我无法加密插入的数据和与加密存储的比较。在这种情况下,我将没有Cipher
对象,因为没有BiometricPrompt
(假设我想提供离线登录的可能性)。
也许我在这里遗漏了一步,但是将 PIN 存储在 ESP 中并仅使用生物识别技术进行“便捷登录”就足够了吗?