java 커맨드라인(command line)기반 응용프로그램에서 키보드 입력을 받을때 입력하는 문자가 항상 에코되어 보여진다. 문제는 암호같은걸 받을때 이를 마스킹(masking)해주거나 지워줘야하는데 해결책이 별로 없다. 아래와 같은 쓰레드를 이용한 대안이 있다.
# 쓰레드
// 키보드 입력시 에코문자를 지워줄 쓰레드
this.threadKeyInEchoEraser = new Thread(new Runnable(){
public void run()
{
while(shouldRunKeyInEchoEraserThread){
System.out.print("\010*");
try{
Thread.sleep(1);
}
catch(InterruptedException ie){
ie.printStackTrace();
}
}
}
});
this.shouldRunKeyInEchoEraserThread = true;
this.threadKeyInEchoEraser.start();
# 입력받는 부분
BufferedReader br
= new BufferedReader(new InputStreamReader(System.in));
String password = br.readLine();
// stop keyinEchoEraser thread
this.shouldRunKeyInEchoEraserThread = false;
System.out.println("passwd = "+password);
'java' 카테고리의 다른 글
java.io.File.getCanonicalPath(), getAbsolutePath() (0) | 2008.03.05 |
---|---|
제9회 자바 개발자 컨퍼런스 (0) | 2008.02.04 |
java nio의 주요 클래스인 ByteBuffer 클래스의 주요 메소드를 이해하기 위한 코드 (0) | 2007.12.13 |
숫자 형식에 대해서 java 정규식 테스트 (1) | 2007.07.24 |
csv 포맷 그리고 java (0) | 2007.06.25 |