在Java CLI应用程序中屏蔽密码

时间:2011-09-14 18:02:56

标签: java command-line passwords mask

我用Java(CLI)制作了这个小ATM应用程序,一开始我想要“Code:”然后用户应该输入它,在我的Java应用程序中它应该说像String(或int) ?)code = 1234;如果有效,那么继续,如果没有错,再试一次,如果有错3次,请停止应用。

这样的样子怎么样?我已经在屏蔽密码后搜索了几个小时,并尝试了不同类型的代码而没有任何运气。我只想要一些简单的东西,将字符串转换为星号。

目前我的密码掩码如下所示:

java.io.Console cons;
char[] passwd;

if ((cons = System.console()) != null && (passwd = cons.readPassword("[%s]", "Code:")) != null)

但是我无法(不知道)如何在代码中设置密码。

3 个答案:

答案 0 :(得分:5)

使用班级readPassword的{​​{1}}方法。

java.io.Console的{​​{3}}有一个示例,说明如何从控制台窗口读取密码而不用明文回显。

修改

Michael,此代码是让用户在控制台窗口中输入关键字而不显示它。用户完成后,密码存储在变量Console中。看起来你真正想要的是完全不同的东西:你有一些其他程序要求输入密码,你希望你的程序自动输入该密码。

如果这确实是您想要做的,那么您不需要使用类passwd。您可以尝试使用类Console在另一个应用程序中输入击键(但我不确定它是否适用于控制台窗口 - 尝试一下)。

答案 1 :(得分:0)

这个网站有一个非常准确的例子:http://download.oracle.com/javase/tutorial/essential/io/cl.html

要彻底,heretwo个类似教程的更多链接。


他们回答你的问题吗?


根据您的评论,您可能并不完全了解Java语法。

你不能写:

char["mypassword"] passwd;

我认为你的意思是:

String str = "mypassword";
char[] passwd = str.toCharArray();

<强>更新

试试这段代码:

Console c = System.console();
if (c == null) {
    System.err.println("No console.");
    System.exit(1);
}

char [] passwd = c.readPassword("Enter your password: ");

c.println("Password is:");
c.println(new String(passwd));

答案 2 :(得分:-1)

看看这个太阳Java article ......它突出了许多不同的方法。

具体来说,它展示了如何使用AWT的TextField类和setEchoChar()方法,以及运行单独线程来删除和替换控制台应用程序中的类型字符的方法。