如何在Android上存储密码

如何在Android上存储密码,android,rsa,keystore,password-encryption,android-keystore,Android,Rsa,Keystore,Password Encryption,Android Keystore,我希望了解Android密钥库,以便在设备上存储密码。() 在这篇文章中,它说“使用Android密钥库提供商让单个应用程序存储自己的凭据,只有应用程序本身才能访问。”这正是我想要的 因此,我认为这样做的方式是: 1) 我将生成一个RSA密钥 2) 将私钥存储在密钥库中 3) 将公钥存储在一些SharePref中 4) 使用公钥加密密码 5) 使用私钥加密密码 然而,我认为我误解了一些东西,因为这篇文章没有显示 1) 如何将PrivateKey保存到密钥库(我没有看到任何API显示密钥库是如何添

我希望了解Android密钥库,以便在设备上存储密码。()

在这篇文章中,它说“使用Android密钥库提供商让单个应用程序存储自己的凭据,只有应用程序本身才能访问。”这正是我想要的

因此,我认为这样做的方式是: 1) 我将生成一个RSA密钥

2) 将私钥存储在密钥库中

3) 将公钥存储在一些SharePref中

4) 使用公钥加密密码

5) 使用私钥加密密码

然而,我认为我误解了一些东西,因为这篇文章没有显示

1) 如何将PrivateKey保存到密钥库(我没有看到任何API显示密钥库是如何添加密钥的)

2) 不显示如何使用PrivateKey解密数据

婴儿为什么这篇文章谈论“在密钥库中使用私钥在某些数据上创建签名”。在某些数据上创建签名意味着什么???(我想用私钥解密数据)。为什么它要验证“先前由私钥生成的签名”

所以我在这一点上迷路了。。。这篇文章从正确的地方开始,但到最后,我对它试图实现的目标感到困惑

有人能告诉我我所做的一切是否有意义吗? 或者我应该在自己的数据库中保存公钥和私钥吗?(这里没有太多安全性,但这是我能做的最好的,因为我需要在设备上存储密码)

非常感谢


Rgds

我引用的这一行来自使用内部存储 默认情况下,您在内部存储器上创建的文件只能由您的应用程序访问。这种保护由Android实现,对于大多数应用程序来说已经足够了

现在谈谈加密: 密钥库API处理数据的加密。密钥用于安全通信,而不是存储密码。密码通常是不可逆的哈希或映射。不需要解密,只需要匹配

例如:向通信发送加密的数据时,如果通信涉及的另一方需要知道数据是什么,则需要解密密钥。所以,若你们发送了“你好,我被加密了”,接收者必须知道你们发送了“你好,我被加密了”作为信息

对于密码,如果您输入一些密码短语或密钥,则需要将其与存储的对应项匹配。例如,如果“pass123”是存储为“rdi#$$+!@/b”的密码,那么当您通过检查算法输入密码时,它应该与存储值匹配,并且您经过身份验证,则不需要生成“pass123”

所以,对于您的应用程序,您可以使用某种机制(生成几乎唯一且不可逆的哈希)在输入密码时生成唯一密钥/哈希,然后将其存储在您的应用程序数据中