How to hide password while getting input from console in java
We can create another thread to erase password characters:
the character 010 is backspace.
/**
* @author lautturi.com
* Java example: Hide the entered password on Java console
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class ThreadErase implements Runnable {
private boolean complete;
public ThreadErase(String prompt) {
System.out.print(prompt);
}
public void run() {
complete = true;
while (complete) {
System.out.print("\010*");
try {
Thread.currentThread().sleep(1);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
}
public void enterComplete() {
this.complete = false;
}
}
public class Lautturi {
public static void main(String[] args) {
ThreadErase td = new ThreadErase("Enter your password: ");
Thread t = new Thread(td);
t.start();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String password = br.readLine();
td.enterComplete();
System.out.println("\nYour password is: " + password);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}