Comment masquer un mot de passe dans Java 5?
Je suis en train d'essayer de masquer un mot de passe en Java. Sun java a suggéré une façon de masquer un mot de passe comme suit.
Il utilise un moyen simple de le faire.
public void run () {
stop = true;
while (stop) {
System.out.print("0*");
try {
Thread.currentThread().sleep(1);
} catch(InterruptedException ie) {
ie.printStackTrace();
}
}
}
Mais cette approche présente plusieurs inconvénients.
-
Si l'utilisateur utilise les touches de direction + suppr le mot de passe a révélé.
-
Si l'utilisateur accidentellement appuyer sur 2 touches en même temps (Très haute vitesse de frappe) certains caractères n'est pas masqué.
Avez-vous les gars pense de toute façon que l'on peut obtenir une correcte à 100% de masquage?
OriginalL'auteur Chathuranga Chandrasekara | 2009-07-10
Vous devez vous connecter pour publier un commentaire.
Utilisation Console.readPassword().
Il ne prend pas en charge le masquage.
OriginalL'auteur Bombe
Vous pouvez maintenant utiliser Système.console();
OriginalL'auteur Pierre
À l'aide de certains appels (sur windows et unix), vous pouvez désactiver l'écho de caractères de la console. C'est ce Système.console ()", mais il fonctionne également en Java.
Je suis en utilisant JNA à la carte de certains syscall d'unix et windows dans une succursale privée de jline:
Si vous avez besoin d'exemple de code de laisser un commentaire.
OriginalL'auteur dfa
Avec le JDK 6.0, vous avez les sources java de la classe, y compris de la Console : je viens de vérifié et cette classe n'a qu'Java 5.0 dépendances.
Donc, dans votre projet, vous pouvez créer une copie de cette Console de classe, et ensuite utiliser le readPassword méthode. Je n'ai pas essayé mais ça devrait fonctionner.
OriginalL'auteur Benoit Courtine