我试图掩盖一个密码。太阳java已经提出了一个方法以掩盖一个密码如下。

掩蔽一个密码

它使用一个简单的方式做到这一点。

public void run () {
  stop = true;
  while (stop) {
     System.out.print("\010*");
 try {
    Thread.currentThread().sleep(1);
     } catch(InterruptedException ie) {
        ie.printStackTrace();
     }
  }
}

但是,这种方法有几个缺点。

  1. 如果用户使用箭头键删除键密码得到揭示。

  2. 如果用户不小心按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:

如果你需要代码的例子发表评论。

与JAVA6.0,你有java来源的课程,包括控制台:我只是验证和这类只有Java5.0依赖关系。

因此,在项目中,您可以创建一个副控制台这类,然后使用readPassword方法。我没有尝试,但它应的工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top