JavaRush /Java Blog /Random-KO /콘솔 입력 중에 비밀번호 문자를 숨기는 방법은 무엇입니까?
fatfaggy
레벨 26
Киев

콘솔 입력 중에 비밀번호 문자를 숨기는 방법은 무엇입니까?

Random-KO 그룹에 게시되었습니다
이것이 질문입니다. 콘솔 애플리케이션에서는 사용자가 로그인과 비밀번호를 입력합니다. 그러나 비밀번호를 입력할 때는 비밀번호의 각 문자를 별표로 "마스크"해야 합니다. 또는 Linux에서와 같이 비밀번호를 입력하는 동안 어떤 문자도 표시하지 않아야 합니다. 이에 대해 별도의 스레드를 사용하는 옵션을 찾았습니다. 다음과 같이 보입니다. package main; import java.io.*; public class Main { public static void main(String[] args) { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter username: "); String user = in.readLine(); Thread hide = new PasswordsHider("Enter password: "); hide.start(); String pass = in.readLine(); hide.interrupt(); } private static class PasswordsHider extends Thread { public PasswordsHider(String prompt) { super("Hiding passwords thread"); System.out.print(prompt); } @Override public void run() { while (!isInterrupted()) { System.out.print("\010"); try { Thread.sleep(1); } catch (InterruptedException e) { //e.printStackTrace(); } } } } } 그러나 실행 중에 입력한 문자를 "덮어쓰기"하는 대신 화면에 공백이 많이 표시됩니다. :) "\010" 대신 "\010*"을 사용해 보았지만 별표가 표시됩니다. 각 공백에 추가됨)) "\b"가 다시 출력에 많은 공백을 갖게 됩니다. 명령줄에서 실행하면 작동할 수도 있지만 이론상으로는 이렇게 작성했습니다. 나는 이것이 Eclipse의 우선순위가 낮은 버그라고 들었지만 그 아이디어에 대해서는 한마디도 하지 않았습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION