有什么想法掩盖输入?

时间:2013-12-23 15:54:20

标签: java

我一直在处理我的小项目,其中包含帐户名和帐户密码作为数组。

程序运行后,它会要求您输入您的用户名,然后输入密码,然后将其与其数据库匹配。如果正确:继续;如果不是:显示登录失败。

我想要的是当用户输入密码而不是将密码显示为1234时我希望将其显示为****

{
    Scanner in = new Scanner(System.in);
public int UserNameAndPassword(){
    System.out.println("Pleass Enter your username:");
    String user =in.nextLine();
    System.out.println("Pleass Enter your Password:");
    String pin = in.nextLine();
   int p= FindNameAndPassword(user,pin);
return p;
}

主要

public static void main(String[] args) {
    HelpingMethodes h =new HelpingMethodes();       
    Scanner in =new Scanner(System.in);     
    while(true)
    {
        int position,choise;
        position = h.UserNameAndPassword();
        boolean login = true;
         while(position==-1)
         {
            System.out.println("You entered wrong Username or Password");
            System.out.print("Pleas try again\n");
            position=h.UserNameAndPassword()        
        }

在Java中有没有简单的方法来实现它?

2 个答案:

答案 0 :(得分:4)

考虑Console.readPassword。虽然它不会用 * 掩盖密码,但它可以隐藏输入的文本。快速代码快照:

 char[] password = System.console().readPassword("Password: ");        
 System.out.println("Password is: "+ password);

注意:您必须通过命令行运行程序。如果您通过IDE运行它,您将在Console对象上获得 null

您会找到详细的教程here

如果您希望使用控制台,则必须实施替代解决方案。你必须编写一个线程来覆盖收到的输入,这不是一项简单的任务。据我所知,Scanner没有内置的屏蔽方法。

答案 1 :(得分:0)

尝试使用:http://docs.oracle.com/javase/6/docs/api/java/io/Console.html#readPassword()代替扫描程序。

此外,这称为密码屏蔽,而不是散列,仅供参考。