JavaRush /Blog Java /Random-FR /Comment masquer les caractères du mot de passe lors de la...
fatfaggy
Niveau 26
Киев

Comment masquer les caractères du mot de passe lors de la saisie dans la console ?

Publié dans le groupe Random-FR
Ceci est la question. Application console, l'utilisateur saisit son identifiant et son mot de passe. Mais lors de la saisie d'un mot de passe, il faut « masquer » chaque caractère du mot de passe avec un astérisque par exemple, ou, comme sous Linux, tout simplement n'afficher aucun caractère lors de la saisie du mot de passe. J'ai trouvé une option en utilisant un fil de discussion séparé pour cela. Cela ressemble à ceci : package main; import java.io.*; public class Main { public static void main(String[] args) { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter username: "); String user = in.readLine(); Thread hide = new PasswordsHider("Enter password: "); hide.start(); String pass = in.readLine(); hide.interrupt(); } private static class PasswordsHider extends Thread { public PasswordsHider(String prompt) { super("Hiding passwords thread"); System.out.print(prompt); } @Override public void run() { while (!isInterrupted()) { System.out.print("\010"); try { Thread.sleep(1); } catch (InterruptedException e) { //e.printStackTrace(); } } } } } mais lors de l'exécution, au lieu d'"écraser" les caractères saisis, un tas d'espaces sont simplement affichés à l'écran :) J'ai essayé d'utiliser "\010*" au lieu de "\010", mais ensuite un astérisque est ajouté à chaque espace)) Lorsque "\b" a à nouveau beaucoup d'espaces dans la sortie. Peut-être que si vous l'exécutez depuis la ligne de commande, cela fonctionnera, mais en théorie, c'est ainsi que je l'ai écrit. J'ai entendu dire qu'il s'agissait d'un bug de faible priorité dans Eclipse, mais pas un mot sur l'idée.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION