Wie Maske ein Passwort in Java 5?
Ich versuche die Maske ein Passwort in Java. Sun java vorgeschlagen hat, ein Weg, um die Maske ein Kennwort wie folgt.
Es verwendet einen einfachen Weg, das zu tun.
public void run () {
stop = true;
while (stop) {
System.out.print("\010*");
try {
Thread.currentThread().sleep(1);
} catch(InterruptedException ie) {
ie.printStackTrace();
}
}
}
Aber dieser Ansatz hat mehrere Nachteile.
-
Wenn der Benutzer den Pfeil-Tasten + entf das Passwort wird offenbart.
-
Wenn der Benutzer versehentlich drücken Sie die 2 Tasten gleichzeitig (Extrem hohe Schreibgeschwindigkeit) einige Zeichen nicht maskiert.
Denken Sie an irgendeiner Weise, die sich eine 100% korrekte Maskierung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Console.readPassword().
Können Sie jetzt mit System.Konsole();
Verwendung bestimmter Systemaufrufe (auf windows-und unix) Sie können deaktivieren echo von Zeichen auf die Konsole. Dies ist, was System.Konsole() macht, aber es funktioniert auch in Java.
Ich bin mit der JVA, um anzeigen bestimmten Systemaufruf von unix und windows in einem privaten Zweig von jline:
Wenn Sie müssen code-Beispiel einen Kommentar hinterlassen.
Mit dem JDK 6.0, müssen Sie die java-Quellen für die Klassen, einschließlich der Konsole : ich habe gerade überprüft, und diese Klasse hat nur Java 5.0 Abhängigkeiten.
So, in Ihrem Projekt, erstellen Sie eine Kopie dieser Konsole Klasse, und verwenden Sie dann die readPassword-Methode. Ich habe nicht versucht, aber es sollte funktionieren.