为什么存储密码时优先使用char[]而不是String?
大家好!我是一名初学Java的开发者,在密码安全方面遇到了一个问题。我经常在代码中看到密码存储在String中,但最近偶然看到推荐使用char[]。
我有一个简单的认证类:
```java
public class UserAuthenticator {
private String password;
public void setPassword(String pwd) {
this.password = pwd;
}
public boolean authenticate(String input) {
return password.equals(input);
}
}
```
一切都能正常工作,但同事说这样有安全漏洞。我不太明白问题出在哪里。毕竟String是不可变对象,这难道不是安全性的优点吗?还是我遗漏了什么?
请用例子解释一下为什么char[]被认为对密码更安全,以及如何正确使用它。String有哪些风险?在Java应用程序中应该如何处理密码?提前感谢您的解答!
<<>>