2010-09-22 119 views
0

我正在開發Java命令行應用程序,並且當用戶輸入密碼時,我需要顯示星號(*)或任何類似的符號。我曾嘗試使用replace()方法,但它只接受一個字符。有沒有辦法通過所有的字母和數字作爲這個替換方法的參數。否則掩蓋suer輸入的方法是什麼。掩蓋java中的密碼字段

我不能在這裏使用console.readPassword技術,因爲我需要String數據類型的密碼(由用戶提供)。

回答

4

實際上,您不能使用替換方法。通過使用它,用戶輸入仍然可見,而且您只需更改存儲在內存中的值。

如果你需要的密碼作爲一個String(這不是出於安全考慮,但無論如何...):

char[] pwd = console.readPassword(); 
String str = new String(pwd); 
2

只需將char數組轉換爲字符串。 Console.readPassword完全是爲你的用例(閱讀pwd:D)。

最初,它是char []而不是String,因爲您可以清空數組的內容,並且您的密碼消失,而String可能會合並並保留在您的內存中。

0

只需使用console.readPassword()然後做一個Stringchar[]

String passWord = new String(chars); 
0

既然你はnt輸出星號,則不能使用console.readPassword。相反,你必須自己完成:禁用回顯,將輸入切換爲無緩衝(char-wise而不是line-wise)模式,通過char讀取密碼char,爲每個讀取的char打印一個星號。我建議你找一個類似curses的庫(對於這個任務有幾個,參見What's a good Java, curses-like, library for terminal applications?)。