如何在java中安全地存储用户密码,以便在整个应用程序中重用

时间:2013-04-04 21:58:25

标签: java security encryption passwords

在我的Java应用程序开始时,我让用户输入他的用户名和密码。这些凭据存储在ConnectionKey对象中,该对象用作应用程序对Web服务进行查询。每个查询都需要有效的用户名和密码。此外,这些查询在应用程序的整个生命周期中执行。

现在我将用户密码存储为ConnectionKey中的String。我知道这是非常不安全的,我想通过某种加密使这更加安全。但是,我需要能够检索原始用户密码才能查询此Web服务。

  • 如何在整个应用程序中使用此密码的同时安全地存储用户密码?

谢谢!

修改

ConnectionKey就是这样一个类:

class ConnectionKey {

    private final String user;
    private final String pass;
    private final String server;

    public ConnectionKey(String user, String pass, String server) {
         this.user = user;
         this.pass = pass;
         this.server = server;
    }

}

1 个答案:

答案 0 :(得分:0)

首先,我确信您在SO Why is char[] preferred over String for passwords?上阅读了以下问题 这意味着如果你有普通密码,至少可以是char []而不是String

除此之外,为了安全地存储用户密码,您应该使用众所周知且经过良好测试(通常是单向)的加密算法对其进行加密。

这可能与您提出的问题以及您如何使用ConnectionKey相矛盾,但问题很容易加密您的密码并更改您使用密码的api /方法。

例如,如果您尝试在服务器端验证ConnectionKey,请更改该方法以使用加密密码,即对已知密码使用相同的加密算法,并将其与传入的加密密码进行比较。 / p>