Ce sont toutes les raisons, il faut choisir un tableau char [] au lieu de String pour un mot de passe.
1. Étant donné que les chaînes sont immuables en Java, si vous stockez le mot de passe en texte brut, il sera disponible en mémoire jusqu'à ce que le garbage collector le supprime, et puisque String est utilisé dans le pool de chaînes pour être réutilisable, il y a de fortes chances qu'il le soit. rester en mémoire pendant une longue durée, ce qui constitue une menace pour la sécurité.
Étant donné que toute personne ayant accès au vidage de la mémoire peut trouver le mot de passe en texte clair, c'est une autre raison pour laquelle vous devez toujours utiliser un mot de passe crypté plutôt que du texte brut. Étant donné que les chaînes sont immuables, il est impossible de modifier le contenu des chaînes car toute modification produira une nouvelle chaîne, tandis que si vous utilisez un char [], vous pouvez toujours définir tous les éléments comme vides ou nuls. Ainsi, le stockage d'un mot de passe dans un tableau de caractères atténue clairement le risque de sécurité de voler un mot de passe.
2. Java lui-même recommande d'utiliser la méthode getPassword () de JPasswordField qui retourne un char [], au lieu de la méthode obsolète getText () qui retourne les mots de passe en texte clair en indiquant des raisons de sécurité. Il est bon de suivre les conseils de l'équipe Java et de se conformer aux normes plutôt que de s'y opposer.
3. Avec String, il y a toujours un risque d'imprimer du texte brut dans un fichier journal ou une console, mais si vous utilisez un tableau, vous n'imprimerez pas le contenu d'un tableau, mais son emplacement de mémoire sera imprimé. Bien que ce ne soit pas une vraie raison, cela reste logique.
String strPassword="Unknown";
char[] charPassword= new char[]{'U','n','k','w','o','n'};
System.out.println("String password: " + strPassword);
System.out.println("Character password: " + charPassword);
String password: Unknown
Character password: [C@110b053
Référencé depuis ce blog . J'espère que ça aide.