所有
我们的服务器正在运行Java 1.5,我很难尝试从命令行屏蔽用户输入。我正在执行一个jar文件(java -jar my.jar),并通过printlns处理命令行提示。我无法使用Java控制台。
由于
答案 0 :(得分:2)
最好的方法是使用Java 6的Console readPassword()方法。既然您提到您使用的是Java 5,那么这不是一个选项。许多Java 6实用程序已经被移植到Java 5.虽然我没有找到任何为此类做过的人。
这个网站有一篇关于如何使用Java 5进行的很好的文章。http://www.devdaily.com/java/edu/pj/pj010005/。基本上,它们使用InputStreamReader包装System.in并读取一行。
答案 1 :(得分:1)
这是一篇有趣的文章:http://java.sun.com/developer/technicalArticles/Security/pwordmask/
编辑现在我重新阅读了,我认为他们的命令行“解决方案”真的很愚蠢。我们在应用程序中得到的是一个辅助程序,它可以理解如何根据操作系统(Linux,Windows,无论如何)屏蔽输入。 Java代码侦听套接字上的命令,前端密码阅读器获取密码和其他所需内容,然后将命令发送到Java代码。
答案 2 :(得分:1)
在Unix系统上?您可以尝试使用参数stty
运行系统程序-echo
,然后再阅读程序和程序stty echo
。
ProcessBuilder pb = new ProcessBuilder("stty", "-echo");
pb.start().waitFor();
// Read the password here
pb = new ProcessBuilder("stty", "echo");
pb.start().waitFor();
请注意,我没试过这个!有些stty
程序对它感到满意,而有些则不是(那些不需要 stdin 来自/dev/tty
才能正常工作的程序...)