char []密码getter和setter到String

时间:2016-09-19 21:42:46

标签: java arrays database char getter-setter

我有一个典型的char[]密码变量,包含getter和setter。我这样做了,所以我的密码变量永远不会以纯文本显示。

private String passwordAsString;
private char[] password;

public char[] getPassword() { return password; }
public void setPassword(char[] password) { this.password = password; }

我想将密码发送到数据库,但我认为它需要以String类型发送。所以,我决定创建一个名为PasswordAsString的新变量。有更好的方法吗?这似乎很草率。

其次我的getPasswordAsString没有将密码作为String返回。到目前为止我所拥有的是:

public void setPasswordAsString(String passwordAsString) {
        this.passwordAsString = passwordAsString;
    }

    public String getPasswordAsString() {
        return password.toString();
    }

2 个答案:

答案 0 :(得分:1)

密码的getter / setter作为String可以像这样实现:

public void setPasswordAsString(String passwordAsString) {
    this.password = passwordAsString.toCharArray();
}

public String getPasswordAsString() {
    return new String(password);
}

这些直接获取并设置char[] password字段 - 不需要passwordAsString字段。使用new String(char[])char[]转换为String,使用String.toCharArray()String转换为char[]

我非常确定以这样的String传递密码会破坏使用char数组的任何安全目的。

答案 1 :(得分:0)

char数组的toString()方法不会得到你想要的东西。相反,构造一个新的String:

public String getPasswordAsString() {
    return new String(password);
}

另外,我可能会考虑不为passwordAsString字段包含一个setter(或者根本就没有第二个字段),因为这与你在这里试图完成的事情背道而驰。