JavaRush /Java-Blog /Random-DE /Wie verstecke ich Passwortzeichen während der Konsolenein...
fatfaggy
Level 26
Киев

Wie verstecke ich Passwortzeichen während der Konsoleneingabe?

Veröffentlicht in der Gruppe Random-DE
Das ist die Frage. Konsolenanwendung, der Benutzer gibt Login und Passwort ein. Allerdings ist es bei der Passworteingabe notwendig, jedes Zeichen des Passworts beispielsweise mit einem Sternchen zu „maskieren“ oder, wie unter Linux, bei der Passworteingabe einfach keine Zeichen anzuzeigen. Ich habe dazu eine Option gefunden, die einen separaten Thread verwendet. Es sieht ungefähr so ​​aus: 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(); } } } } } Aber während der Ausführung werden die eingegebenen Zeichen nicht „überschrieben“, sondern einfach eine Reihe von Leerzeichen auf dem Bildschirm angezeigt :) Ich habe versucht, „\010*“ anstelle von „\010“ zu verwenden, aber dann ein Sternchen wird zu jedem Leerzeichen hinzugefügt)) Wenn „\b“ wieder viele Leerzeichen in der Ausgabe enthält. Wenn Sie es über die Befehlszeile ausführen, funktioniert es vielleicht, aber theoretisch habe ich es so geschrieben. Ich habe gehört, dass dies ein Fehler mit niedriger Priorität in Eclipse ist, aber kein Wort über die Idee.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION