Wie lässt sich über die Kommandozeile ein Passwort abfragen ohne dass es angezeigt wird? v.1.6
In der main
-Methode der Klasse wird über die
Methode System.console()
ein Console-Objekt
gebildet, das wiederum eine Methode readPassword()
bereit stellt, die zwei Parameter entgegen nimmt: einen
Hinweis-String und die erwartete Länge des Passwortes. Das
klappt natürlich nur, wenn die ausführende JVM mit einer
Konsole verbunden ist.
Im Rahmen einer do-while-Schleife
wird die eingegebene Länge kontinuierlich überprüft
und das Passwort als Character-Array zwischengespeichert. Die
Ausgabe des Passworts erfolgt erst bei Erreichen dieser Länge
nach dem Drücken der Return-Taste.
Danach wird
das Passwort-Array aus Sicherheitsgründen sofort auf null
gesetzt.
import java.io.Console;
public class PasswortLesen {
static final int MIN_PASSWORD_LENGTH = 8;
public static void main(String[] args) {
char[] password;
Console c = System.console();
if (c != null) {
do {
password = c.readPassword(
"Passwort eingeben (Minimum %d Zeichen) und\nanschliessend <return> druecken: ",
MIN_PASSWORD_LENGTH);
if(password.length < MIN_PASSWORD_LENGTH)
System.out.println("Passwort zu kurz, bitte wiederholen!");
} while (password.length < MIN_PASSWORD_LENGTH);
System.out.println(new String(password));
password = null;
}
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.