Jos*_*hon 3 encryption android credentials aes android-keystore
有一个随机密钥来通过 AES 加密本地凭据,我正在按照以下教程尝试安全地存储该密钥,然后能够在以后解密:
nelenkov.blogspot.co.uk 在 android 中存储应用程序机密
本教程解释了如何访问系统密钥库并将密码存储在其中。
我面临的问题集中在调用UNLOCK ( android.credentials.UNLOCK ) KeyStore 上。未初始化 KeyStore 的设备(目前 API 低于 14),它们会显示一个对话框,要求输入 8 位密码。
本教程运行良好,但是显示此对话框甚至只显示一次,它会打扰大多数用户。
有什么办法可以跳过这个对话框吗?
如果有人描述了一种在本地保留密钥的更好方法,我会更高兴。
KeyStore不仅可以在 ICS 之前的设备上出现锁定。最简单的KeyStore锁定方法是:
设备启动后,KeyStore将被锁定。com.android.credentials.UNLOCKIntent 将启动com.android.settings.CredentialStorageActivity,而 Activity 将显示UnlockDialog,提示输入密码。
* KeyStore: LOCKED
* KeyGuard: OFF/ON
* Action: old unlock dialog
* Notes: assume old password, need to use it to unlock.
* if unlock, ensure key guard before install.
* if reset, treat as UNINITALIZED/OFF
Run Code Online (Sandbox Code Playgroud)
KeyStore5 次尝试输入错误密码后被重置。但是重置 KeyStore 实际上并没有将其关闭或取消初始化。KeyStore 保持锁定状态,取消初始化它的唯一方法似乎需要com.android.credentials.RESET. 但这将重置 KeyStore 和 KeyChain(用户安装的证书)。
如果您想静默重置 KeyStore 和 KeyChain,无需用户确认,您可以通过绑定IKeyChainService并调用其reset()方法来完成。
但我不建议这样做。更好的解决方案可能是显示一些通知消息,要求用户手动设置屏幕锁定