Avatar ·

Por que armazenar senhas em Java é preferível com char[] em vez de String?

Olá a todos! Sou um desenvolvedor Java iniciante e estou escrevendo um pequeno aplicativo para autenticação de usuários. Me deparei com uma questão de segurança ao trabalhar com senhas. Normalmente, uso String para inserir a senha do console ou do campo JPasswordField. Por exemplo: ```java Console console = System.console(); String password = new String(console.readPassword("Digite a senha: ")); ``` Mas recentemente, em um fórum, li que usar String para senhas é uma má prática e que é melhor usar char[]. Sinceramente, não entendo bem qual é a diferença. Afinal, String é apenas um conjunto de caracteres, assim como um array char. Por que se considera que char[] é mais seguro? Entendo que String é imutável, mas isso é um problema? Afinal, após usar a senha, posso simplesmente atribuir null à variável, e o garbage collector mais cedo ou mais tarde removerá a string da memória. Alguém pode explicar de forma simples qual é o problema? E como organizar corretamente o trabalho com senhas em Java? Ficarei grato.