2010-09-22 8 views
0

Je développe une application de ligne de commande Java et j'ai besoin d'afficher un astérisque (*), ou un signe similaire, lorsque l'utilisateur entre le mot de passe. J'ai essayé d'utiliser la méthode replace() mais elle n'accepte qu'un seul caractère. Existe-t-il un moyen de passer toutes les lettres et les nombres en argument pour cette méthode de remplacement. Ou alors quelle est la méthode de masquage de l'entrée suer.Masquage du champ de mot de passe dans java

Je ne peux pas utiliser la technique console.readPassword ici, car j'ai besoin du mot de passe (tpyed par l'utilisateur) dans le type de données String.

Répondre

4

En fait, vous ne pouvez pas utiliser la méthode de remplacement. En l'utilisant, l'entrée de l'utilisateur est toujours visible et vous modifiez uniquement la valeur que vous avez stockée dans la mémoire.

Si vous avez besoin du mot de passe en tant que chaîne (qui n'est pas recommandé pour des raisons de sécurité, mais quand même ...):

char[] pwd = console.readPassword(); 
String str = new String(pwd); 
2

Convertissez juste le tableau char en une chaîne. Console.readPassword est exactement fait pour votre cas d'utilisation (lire un pwd: D). À l'origine, il s'agit de char [] et non de chaîne car vous pouvez annuler le contenu du tableau et votre mot de passe est parti tandis que String peut être regroupé et rester dans votre mémoire.

0

Il suffit d'utiliser console.readPassword() puis faire un String du char[]:

String passWord = new String(chars); 
0

Puisque vous wa Pour produire des astérisques, vous ne pouvez pas utiliser console.readPassword. Au lieu de cela, vous devez le faire par vous-même: désactivez l'écho, passez l'entrée au mode sans tampon (char-wise au lieu de ligne), lisez le mot de passe char par char, imprimez un astérisque pour chaque caractère lu. Je vous propose de chercher une bibliothèque ressemblant à des curses pour Java (il y en a plusieurs autour, voir What's a good Java, curses-like, library for terminal applications?, pour cette tâche.)

Questions connexes