gpt4 book ai didi

java - 如何在命令行 Java 程序中用星号或类似方式屏蔽密码?

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:36 24 4
gpt4 key购买 nike

从命令行读取密码而不显示密码的标准 JVM 方法是 java.io.Console.readPassword()。但是,这在用户键入时什么也没有显示;习惯于图形程序的用户会期望诸如“•”或“*”之类的符号出现在他们键入的字符的位置。自然地,他们也会希望退格、插入等功能正常工作,只是将所有正在操作的字符替换为相同的符号。

在 2019 年,当用户在控制台应用程序中键入“hunter2”时,是否有一个普遍接受的 JVM 程序来显示“*******”?如果没有 GUI,这甚至可以正确完成吗? A 2011 SO question on the topic得到链接到 this article 的答案关于主题;我们现在能比其中显示的相当复杂的解决方案做得更好吗?

(我碰巧使用 Kotlin 作为我选择的语言,所以如果有一个特定于 Kotlin 的解决方案将会满足。)

最佳答案

猎人2?哇。已确认引用。

没有简单的方法。主要问题是标准的 System.in 在用户按下 enter 之前根本不会给你任何字符,所以没有办法模拟它(如果你试图阅读 char-for-来自 System.in 的 char 并在每次按下键时发出 *,这是行不通的)。

位于 https://github.com/mabe02/lanterna 的 lanterna 图书馆可以做到,虽然。如果你想模仿它,那是......非常复杂。它有 unix 和 windows 的分支代码路径。例如,在 unix 上,它使用一些 hackery 来确定你正在使用什么 tty,然后打开正确的/dev/tty 设备。有了 lanterna,自己写这个就很简单了。

就是这样,或者接受 Console.readPassword() 的空白,真的。或者,编写 Web 界面或 swing/awt/javafx GUI。

关于java - 如何在命令行 Java 程序中用星号或类似方式屏蔽密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com