JavaRush /Java Blog /Random-IT /Come nascondere i caratteri della password durante l'inpu...
fatfaggy
Livello 26
Киев

Come nascondere i caratteri della password durante l'input della console?

Pubblicato nel gruppo Random-IT
Questa è la domanda. Applicazione console, l'utente inserisce login e password. Ma quando si inserisce una password, è necessario "mascherare" ogni carattere della password, ad esempio, con un asterisco o, come in Linux, semplicemente non visualizzare alcun carattere durante l'immissione della password. Ho trovato un'opzione utilizzando un thread separato per questo. Sembra qualcosa del genere: 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(); } } } } } ma durante l'esecuzione, invece di "sovrascrivere" i caratteri inseriti, sullo schermo vengono semplicemente visualizzati un mucchio di spazi :) Ho provato a usare "\010*" invece di "\010", ma poi appare un asterisco viene aggiunto a ogni spazio)) Quando "\b" contiene nuovamente molti spazi nell'output. Forse se lo esegui dalla riga di comando funzionerà, ma in teoria è così che l'ho scritto. Ho sentito che si tratta di un bug a bassa priorità in Eclipse, ma non una parola sull'idea.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION