将密码存储在加密文件中

时间:2012-02-16 12:17:26

标签: java

我正在编写这个需要几个单独帐户的Java桌面应用程序(没有互联网连接),我需要将登录信息存储在可以访问的文件中以检查密码。

我不知道应该怎么做,如何在不看其他密码的情况下阅读加密文件?

3 个答案:

答案 0 :(得分:2)

您永远不需要解密密码。您需要保存用户名,消化的密码和盐。盐是非常重要的,因为如果你不使用盐,很容易用彩虹表获取密码。

保存密码时,需要生成随机盐。然后将它与密码连接,并将其消化。然后存储用户名,消化密码和盐。

如果要检查密码,可以将用户编写的密码与为该用户存储的盐连接起来,将其消化并与保存的消化密码进行比较。

请注意您将使用的摘要算法。 SHA-XX也不错,默认情况下它包含在java中。

答案 1 :(得分:0)

最常见的解决方案是不加密文件,而是加密存储的密码。您可以使用单向加密算法(这使得易于加密,难以解密,保证加密密码的唯一性,因此两个不同的密码不会产生相同的加密字符串)。当用户再次提交密码时,您需要对其提交进行加密,并将加密的密码与存储在文件中的密码进行比较。

答案 2 :(得分:-1)

通常和安全的方法是按如下方式进行:

  • 将“username”存储为clear,将密码存储为SHA-1摘要(或类似)。
  • 当用户登录时,使用SHA-1算法消化密码,并将结果与​​文件中的结果进行比较。如果SHA-1字符串匹配,则密码正确。

这可以确保有权访问该文件的人不会知道密码(因为MD5也不可逆),并且无法登录该应用程序。