【问题标题】:Java : How to read password from file?Java:如何从文件中读取密码?
【发布时间】:2017-01-13 19:45:19
【问题描述】:

我正在使用System.console() 来读取用户密码。

我的代码:

    Console console = System.console();
    if (console == null) {
        throw new RuntimeException("No console is available for input");
    }

    System.out.print("Enter the password: ");
    String password = new String(console.readPassword());

当我直接运行它时它工作正常(来自Redhat)。

问题是当我尝试从文本文件中读取密码时:

java -jar my_jar.jar < password.txt

我明白了:

没有可用于输入的控制台。

我该如何解决?

【问题讨论】:

标签: java console passwords


【解决方案1】:

这种行为是预期的。引用java.io.Console:

虚拟机是否有控制台取决于 底层平台以及虚拟化的方式 机器被调用。如果虚拟机是从 交互式命令行不重定向标准输入和 输出流 那么它的控制台就会存在并且通常是 连接到虚拟机所在的键盘和显示器 已启动。

对于不使用Console 的可能解决方案,您可以阅读此答案Trying to read from the console in Java

如果控制台存在,您可以继续使用控制台,如果不存在,则故障回复到BufferedReader/Scanner

【讨论】:

  • 谢谢,但我想使用 java 控制台提供的密码混淆选项。
  • 如果控制台存在,您可以继续使用控制台,如果不存在则故障返回到 BufferedReader/Scaner。如果您没有控制台,我不明白如何使用“java 控制台提供的密码混淆选项”。
  • 我不想使用 BufferedReader/Scaner,因为这样我就有用户设置密码而不进行混淆的风险。无论如何,您可能是对的,并且没有解决方案。我将添加一个选项以在文本文件中发送密码。
猜你喜欢
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多