Строка до звездочки, маскирующий пароль

Я создаю этот простой код входа для банкомата. Вы вводите имя пользователя и пароль, и вы входите в систему, это работает просто отлично. Поскольку я не подключаюсь к базе данных или внешнему текстовому файлу, и у меня только что был 1 пользователь, это просто написано в коде Java. Но когда вы вводите пароль «p4ss», я хочу, чтобы он был замаскирован, поэтому вместо того, чтобы видеть его на экране при вводе, вы должны видеть «* * * *» или «» просто пустым (например, когда вы вводите пароль в Linux).

В настоящее время мой код выглядит так:

    String user;
    String pass;            
    System.out.print("User: ");
    user = Keyboard.readString();
    System.out.print("Pass: ");
    pass = Keyboard.readString();

    if ((user.equals("Admin")) && (pass.equals("p4ss")))            
    {       
        menu();      
    }    
    else
    {       
        out.println("Wrong username or password.");
    }

Был бы признателен за любую помощь, которую я мог бы получить.


person Michael    schedule 07.10.2011    source источник
comment
Что такое класс Keyboard здесь? Если вы пишете код для банкомата, с какой стати вы используете System.out?   -  person Jon Skeet    schedule 07.10.2011
comment
Stackoverflow имеет встроенную защиту, когда вы вводите p4ss, я вижу только ****   -  person JRL    schedule 07.10.2011
comment
Ну, это просто страница входа, класс клавиатуры, чтобы я мог вводить текст. Система вышла, поэтому я могу видеть вывод на экране.   -  person Michael    schedule 07.10.2011
comment
Возможный дубликат Как замаскировать пароль в Java 5?   -  person jww    schedule 05.10.2014


Ответы (4)


Майкл, взгляните на описание на веб-сайте Sun: https://web.archive.org/web/20120214061606/http://java.sun.com/developer/technicalArticles/Security/pwordmask

Или, если вы используете Java 5 или новее, вы можете использовать это: Как замаскировать пароль в Java 5?

person Pieter    schedule 07.10.2011

Я предполагаю, что это имитация банкомата...

Разработчик указал, что маскирование пароля на консоли по умолчанию поддерживается, так что вы можете его использовать. Однако для всего, кроме самого тривиального ввода-вывода, вам лучше использовать Swing или «подобную проклятиям» библиотеку:

person Paul Cager    schedule 07.10.2011
comment
Маскировка пароля поддерживается из коробки в Java SE 6 или новее, как указано в моем ответе. - person Dev; 07.10.2011

Если у вас JavaSE 6 или новее, вы можете использовать Console.readPassword()

person Dev    schedule 07.10.2011

Для этого существует специальный метод Console.readPassword(), представленный в Java 6. Однако вы, очевидно, не сможете запустить такой код на реальном банкомате! В Swing есть JPasswordField, который позволяет выполнять такую ​​маскировку в графическом интерфейсе, и можно представить себе окно банкомата на основе Swing.

person Ernest Friedman-Hill    schedule 07.10.2011
comment
Первая часть неверна, вы можете замаскировать пароль на консоли в Java 6 или новее. - person Dev; 07.10.2011