在我的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;
}
}
答案 0 :(得分:0)
首先,我确信您在SO Why is char[] preferred over String for passwords?上阅读了以下问题 这意味着如果你有普通密码,至少可以是char []而不是String
除此之外,为了安全地存储用户密码,您应该使用众所周知且经过良好测试(通常是单向)的加密算法对其进行加密。
这可能与您提出的问题以及您如何使用ConnectionKey相矛盾,但问题很容易加密您的密码并更改您使用密码的api /方法。
例如,如果您尝试在服务器端验证ConnectionKey,请更改该方法以使用加密密码,即对已知密码使用相同的加密算法,并将其与传入的加密密码进行比较。 / p>