在java中屏蔽密码字段

在java中屏蔽密码字段,java,command-line,passwords,masking,Java,Command Line,Passwords,Masking,我正在开发一个Java命令行应用程序,当用户输入密码时,我需要显示一个星号*,或任何类似的符号。我尝试过使用replace方法,但它只接受一个字符。是否有一种方法可以传递所有字母和数字作为此替换方法的参数。或者,屏蔽用户输入的方法是什么 我不能在这里使用console.readPassword技术,因为我需要用户在字符串数据类型中键入的密码。只需将字符数组转换为字符串即可。Console.readPassword正是为您阅读pwd:D的用例而设计的 最初,它是char[]而不是String,因为

我正在开发一个Java命令行应用程序,当用户输入密码时,我需要显示一个星号*,或任何类似的符号。我尝试过使用replace方法,但它只接受一个字符。是否有一种方法可以传递所有字母和数字作为此替换方法的参数。或者,屏蔽用户输入的方法是什么


我不能在这里使用console.readPassword技术,因为我需要用户在字符串数据类型中键入的密码。

只需将字符数组转换为字符串即可。Console.readPassword正是为您阅读pwd:D的用例而设计的


最初,它是char[]而不是String,因为您可以将数组的内容设为null,并且您的密码已丢失,而String可能会被合并并保留在内存中。

实际上,您不能使用replace方法。通过使用它,用户输入仍然可见,您只需更改存储在内存中的值

如果出于安全原因,不建议将密码作为字符串使用,但无论如何…:

char[] pwd = console.readPassword();
String str = new String(pwd);
只需使用console.readPassword,然后从char[]生成一个字符串:

这里有一个例子:
[java.sun.com]

由于要输出星号,因此不能使用console.readPassword。相反,您必须自己做:禁用回音,将输入切换到无缓冲字符模式而不是行模式,逐字符读取密码,为您读取的每个字符打印一个星号。我建议您寻找一个类似于java库的curses,这项任务有几个方面

String passWord = new String(chars);