Avatar ·

¿Por qué es preferible usar char[] en lugar de String para almacenar contraseñas en Java?

¡Hola a todos! Soy un desarrollador Java principiante y estoy escribiendo una pequeña aplicación para la autenticación de usuarios. Me encontré con una cuestión de seguridad al trabajar con contraseñas. Normalmente uso String para ingresar la contraseña desde la consola o desde un campo JPasswordField. Por ejemplo: ```java Console console = System.console(); String password = new String(console.readPassword("Ingrese la contraseña: ")); ``` Pero recientemente leí en un foro que usar String para contraseñas es una mala práctica, y que es mejor usar char[]. Honestamente, no entiendo bien cuál es la diferencia. Después de todo, String es solo un conjunto de caracteres, igual que un array de char. ¿Por qué se considera que char[] es más seguro? Entiendo que String es inmutable, pero ¿eso es un problema? Después de usar la contraseña, puedo simplemente asignar null a la variable, y el garbage collector eventualmente eliminará la cadena de la memoria. ¿Alguien puede explicar de manera sencilla cuál es el truco aquí? ¿Y cómo organizar correctamente el trabajo con contraseñas en Java? Estaré agradecido.