我正在尝试用户身份验证方法(确切地说是指纹),我也在研究Android KeyStore
。我正在尝试构建一个允许用户设置指纹的系统,该指纹将用户登录到我的服务器。目前,服务器需要POST请求,该请求需要有效的用户名/密码组合。
我有一些关于它如何工作的问题,因为我只有初学者对Fingerprint
API和KeyStore
如何工作的理解。
1)当我提示指纹并获得成功的回复时(这很容易完成) - 如何将其转换为有效的用户名/密码,以便我可以启动POST请求?我是否需要将用户名和密码存储到KeyStore
中?
2)设置KeyStore
时,看起来究竟如何?我是否需要为用户名和密码设置别名? “myapp_user”,“myapp_pass”例如?
3)如何将用户名和密码的值存储到KeyStore
?
4)我是否正确地接近这个问题?有没有更好的方法将指纹安全地链接到用户名/密码组合?
感谢您的帮助!
答案 0 :(得分:3)
使用AndroidKeystore的一般过程是在AndroidKeyStore中生成一个键。该密钥永远不会离开密钥库(无法导出),但只要您使用特定算法(并非所有算法都受支持),您就可以使用它。您可以看到here哪个Android版支持哪种加密类型。
在Android API 23+上,您可以直接生成AES密钥(在AndroidKeyStore中),并使用该AES密钥加密您的使用数据,例如您提到的用户凭据。
在API23之前需要执行其他步骤:首先在AndroidKeyStore中生成RSA密钥,然后在AndroidKeystore之外生成随机AES密钥(因为不支持AES内部)。然后使用您在AndroidKeyStore中生成的RSA密钥加密生成的AES密钥,并将加密的AES密钥保存到私有应用程序数据目录中。
之后,您可以在选项1中使用生成的AES密钥加密用户凭据。
答案 1 :(得分:0)
我有同样的要求。下面是步骤。
我怀疑这个关键是不变的。我们将密钥传递给服务器端,同时注册指纹t和用户名密码。因此,如果用户再次尝试登录并创建密钥,它将保持不变。