我有一个使用指纹和4位数pin(可以由用户在应用程序设置中设置,这不是系统pin/图案/密码)授权的应用程序。
有指纹一切都很好,我有pin问题。
我要做的是:
- 让用户从应用程序设置中设置引脚
- 为输入pin保护的别名在keystore中生成密钥对(这样私钥就不能在没有此pin的情况下访问)
- 发送公钥到服务器以供将来的签名验证
- 从服务器获取用户令牌并将其存储在本地存储
然后在授权时:
- 请求用户输入引脚
- 根据输入的pin检索私钥
- 从本地存储检索令牌
- 用步骤6中的私钥签名令牌
- 将签名数据发送到服务器
- 在服务器上验证签名,如果它是有效的,为用户打开会话。
我的问题是:我如何生成由用户
输入的pin保护的KeyPair注:对于指纹,此逻辑由以下命令处理:
KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)
我将建议尝试使用这篇文章使用Android密钥库安全地存储任意字符串的帖子。
这篇文章已经涵盖了
-
在设备上生成、安全存储和检索加密密钥
-
加密任意数据并保存在设备上
-
访问并解密数据以供后续使用