Avatar ·

为什么存储密码时优先使用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应用程序中应该如何处理密码?提前感谢您的解答! <<>>

主要