如何在android KeyStore中生成KeyPair,由自定义密码保护



我有一个使用指纹和4位数pin(可以由用户在应用程序设置中设置,这不是系统pin/图案/密码)授权的应用程序。

有指纹一切都很好,我有pin问题。

我要做的是:

  1. 让用户从应用程序设置中设置引脚
  2. 为输入pin保护的别名在keystore中生成密钥对(这样私钥就不能在没有此pin的情况下访问)
  3. 发送公钥到服务器以供将来的签名验证
  4. 从服务器获取用户令牌并将其存储在本地存储

然后在授权时:

  • 请求用户输入引脚
  • 根据输入的pin检索私钥
  • 从本地存储检索令牌
  • 用步骤6中的私钥签名令牌
  • 将签名数据发送到服务器
  • 在服务器上验证签名,如果它是有效的,为用户打开会话。

    我的问题是:我如何生成由用户

    输入的pin保护的KeyPair

    注:对于指纹,此逻辑由以下命令处理:

    KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)
    
  • 我将建议尝试使用这篇文章使用Android密钥库安全地存储任意字符串的帖子。

    这篇文章已经涵盖了

    1. 在设备上生成、安全存储和检索加密密钥

    2. 加密任意数据并保存在设备上

    3. 访问并解密数据以供后续使用

    最新更新