Wie lässt sich über die Kommandozeile ein Passwort abfragen ohne dass es angezeigt wird? v.1.6

Die Java-Version 6 bietet mit der Klasse Console eine simple Möglichkeit, eine sichere Passwort-Abfrage ohne Anzeige der Zeichen zu realisieren.

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.