我想提示用户输入Java代码中的密码,出于安全原因,我宁愿不将输入打印到屏幕上。
我知道类Console
,但我希望能够从IDE运行我的程序以进行测试。任何替代方案?
答案 0 :(得分:1)
我强烈建议您使用尽可能使用Console
的设置,如果不是Scanner
或Reader
,则会回退。
然而,这个问题的具体措辞有一个非常丑陋的解决方案,I found here。
解决方案基本上是重复地将退格(\b
)字符发送到控制台以隐藏所写的内容。您可能有可能使用某种倾听者来制定更加资源友好的版本,但我不确定。
应该完成此操作的一些示例代码:
public class PwdConsole {
public static void main(String[] args) throws Exception {
ConsoleEraser consoleEraser = new ConsoleEraser();
System.out.print("Password? ");
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
consoleEraser.start();
String pass = stdin.readLine();
consoleEraser.halt();
System.out.print("\b");
System.out.println("Password: '" + pass + "'");
}
class ConsoleEraser extends Thread {
private boolean running = true;
public void run() {
while (running) {
System.out.print("\b ");
}
public synchronized void halt() {
running = false;
}
}
}