Java 1.5 命令行密码屏蔽

问题描述 投票:0回答:3

我们的服务器正在运行 Java 1.5,我在尝试屏蔽来自命令行的用户输入时遇到困难。我正在执行一个 jar 文件 (java -jar my.jar) 并通过 printlns 通过命令行提示符进行工作。我无法使用 Java 控制台。

java command-line passwords
3个回答
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
投票

在 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
程序对此感到满意,有些则不然(那些不需要来自 /dev/tty
stdin
才能正常工作...)


1
投票

这是一篇有趣的文章:http://java.sun.com/developer/technicalArticles/Security/pwordmask/

编辑现在我重新阅读了这篇文章,我认为他们的命令行“解决方案”真的很愚蠢。我们的应用程序中有一个辅助程序来执行此操作,该程序了解如何根据操作系统(Linux、Windows 等)屏蔽输入。 Java 代码侦听套接字上的命令,前端密码读取器获取密码和其他所需的任何内容,然后将命令发送到 Java 代码。

© www.soinside.com 2019 - 2024. All rights reserved.