7

我有使用指纹和 4 位密码(可由用户在应用程序设置中设置,这不是系统密码/模式/密码)授权的应用程序。

使用指纹一切都很好,我的密码有问题。

我想做的是:

  1. 让用户从应用程序设置中设置 pin
  2. 在密钥库中为某些受输入的 pin 保护的别名生成密钥对(这样,没有这个 pin 就无法访问私钥)
  3. 将公钥发送到服务器以供将来签名验证
  4. 从服务器获取用户令牌并将其存储在本地存储中

然后在授权期间:

  1. 请求用户输入密码
  2. 通过输入的密码检索私钥
  3. 从本地存储中检索令牌
  4. 使用步骤 6 中的私钥签署令牌
  5. 将其发送到带有签名数据的服务器
  6. 验证服务器上的签名,如果签名有效,则为用户打开会话。

我的问题是:如何生成受用户输入的 pin 保护的 KeyPair

PS 对于指纹,此逻辑由以下方式处理:

KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)
4

1 回答 1

0

我会建议尝试使用这篇文章使用 Android KeyStore 来安全地存储任意字符串

这篇文章涵盖了点为

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

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

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

我希望它会有所帮助。

于 2016-11-11T13:09:25.183 回答