题
我试图掩盖一个密码。太阳java已经提出了一个方法以掩盖一个密码如下。
它使用一个简单的方式做到这一点。
public void run () {
stop = true;
while (stop) {
System.out.print("\010*");
try {
Thread.currentThread().sleep(1);
} catch(InterruptedException ie) {
ie.printStackTrace();
}
}
}
但是,这种方法有几个缺点。
如果用户使用箭头键删除键密码得到揭示。
如果用户不小心按2钥匙在同一时间(非常高打字的速度)的一些人物没有得到掩盖。
做你们认为的任何方式,可以获得100%正确的掩蔽?
解决方案
其他提示
你现在可以使用 系统。控制台();
Console c = System.console();
if (c == null) {
System.err.println("No console.");
System.exit(1);
}
char [] password = c.readPassword("Enter your password: ");
使用某些系统调用(on windows和unix)可以禁止回应的字控制台。这是什么样的系统。控制台()不,但是它的工作还在Java。
我使用的是南国防军到地图上的某些系统调用的unix and windows在私人支jline:
- 在unix我在使用 联 结构和 tcgetattr/tcsetattr
- 对我使用的windows GetConsoleMode 和 SetConsoleMode.
如果你需要代码的例子发表评论。
与JAVA6.0,你有java来源的课程,包括控制台:我只是验证和这类只有Java5.0依赖关系。
因此,在项目中,您可以创建一个副控制台这类,然后使用readPassword方法。我没有尝试,但它应的工作。
不隶属于 StackOverflow