簡體   English   中英

在Java CLI應用程序中屏蔽密碼

[英]Masking password in Java CLI application

我用Java(CLI)創建了這個小ATM應用程序,一開始我想要“Code:”然后用戶應該輸入它,在我的Java應用程序中它應該說像String(或int?)代碼= 1234; 如果有效,那么繼續,如果沒有錯,再試一次,如果有錯3次,停止應用程序。

這樣的樣子怎么樣? 我已經在屏蔽密碼后搜索了幾個小時,並嘗試了不同類型的代碼而沒有任何運氣。 我只想要一些簡單的東西,將字符串轉換為星號。

目前我的密碼屏蔽看起來像這樣:

java.io.Console cons;
char[] passwd;

if ((cons = System.console()) != null && (passwd = cons.readPassword("[%s]", "Code:")) != null)

但是我無法(不知道)如何在代碼中設置密碼。

使用類java.io.ConsolereadPassword方法。

Console類的API文檔有一個示例,說明如何從控制台窗口讀取密碼而不用明文回顯密碼。

編輯

邁克爾,這段代碼是讓用戶在控制台窗口中輸入關鍵字而不顯示它。 用戶完成后,密碼存儲在變量passwd 看起來你真正想要的是完全不同的東西:你有一些其他程序要求輸入密碼,你希望程序自動輸入密碼。

如果這確實是您想要做的,那么您不需要使用類Console 您可以嘗試使用類java.awt.Robot在另一個應用程序中輸入擊鍵(但我不確定它是否適用於控制台窗口 - 嘗試一下)。

這個網站有一個非常准確的例子: http//download.oracle.com/javase/tutorial/essential/io/cl.html

要徹底, 這里兩個類似教程的鏈接。


他們回答你的問題嗎?


根據您的意見,您可能並不完全了解Java語法。

你不能寫:

char["mypassword"] passwd;

我認為你的意思是:

String str = "mypassword";
char[] passwd = str.toCharArray();

更新

試試這段代碼:

Console c = System.console();
if (c == null) {
    System.err.println("No console.");
    System.exit(1);
}

char [] passwd = c.readPassword("Enter your password: ");

c.println("Password is:");
c.println(new String(passwd));

看看這篇Sun Java 文章 ......它突出了許多不同的方法。

具體來說,它展示了如何將AWT的TextField類與setEchoChar()方法一起使用,以及運行單獨的線程來刪除和替換控制台應用程序中的類型字符的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM