Search code examples
javapasswordsmasking

How to mask a password in Java 5?


I am trying to mask a password in Java. Sun java has suggested a way to mask a password as follows.

Masking a password

It uses a simple way to do that.

public void run () {
  stop = true;
  while (stop) {
     System.out.print("\010*");
 try {
    Thread.currentThread().sleep(1);
     } catch(InterruptedException ie) {
        ie.printStackTrace();
     }
  }
}

But this approach has several drawbacks.

  1. If the user uses the arrow keys + delete keys the password gets revealed.

  2. If the user accidentally press 2 keys at the same time (Extremely high typing speed) some characters does not get masked.

Do you guys think of any way that can get a 100% correct masking?


Solution

  • Use Console.readPassword().