字符串到星号,屏蔽密码

时间:2011-10-07 12:59:48

标签: java string password-protection masking

我正在为ATM机创建这个简单的登录代码。 您输入用户名和密码,然后登录,效果很好。由于我没有连接到数据库或外部文本文件而且我只有一个用户,所以它只是在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.");
    }

感谢我能得到的任何帮助。

4 个答案:

答案 0 :(得分:2)

迈克尔,看看Sun网站上的描述: https://web.archive.org/web/20120214061606/http://java.sun.com/developer/technicalArticles/Security/pwordmask

或者,如果您使用的是Java 5或更高版本,则可以使用: How to mask a password in Java 5?

答案 1 :(得分:1)

我认为这是一个模拟的ATM ......

Dev已经指出控制台上的密码屏蔽是开箱即用的,所以你可以使用它。但是对于除了最琐碎的IO之外的任何东西,你最好使用Swing或“类似curses”的库:

答案 2 :(得分:0)

在Java 6中引入了一个特殊的方法Console.readPassword()。你显然无法在真正的ATM上运行这样的代码! Swing有JPasswordField,它允许你在GUI中进行这种屏蔽,可以想象一个基于Swing的ATM窗口。

答案 3 :(得分:0)

如果你有JavaSE 6或更新版本,你可以使用Console.readPassword()