Java: 在dos窗口输入密码,不要把密码直接显示出来,原来可以这么简单

用下面的方法可以实现在控制台上输入密码时,密码不显示在控制台上:Console cons=System.console(); 
System.out.print("请输入密码:"); 
char[] pwd=cons.readPassword(); 
String password = new String(pwd);
System.out.println(password);根据jdk api 文档上介绍:

安全注释: 如果应用程序需要读取密码或其他安全数据,则它应该使用 或 ,并在执行后手工将返回的字符数组归零,以最大限度地缩短内存中敏感数据的生存期。

java.util.Arrays.fill(pwd, ' ');说明一下java.io.Console 这个类是 JDK 6 中新增的类库,用于操作系统的控制台,系统的控制台只能在操作系统原生的控制台中使用,不能在 IDE 的控制台中使用,因为 IDE 中的控制台是经过重定向的。经过测试,如果在eclipse上使用这个readPassword();直接抛出NullPointerException

2011-12-27

原文地址:https://www.cnblogs.com/personnel/p/4583141.html