[英]Masking the password field in java
我正在開發Java命令行應用程序,當用戶輸入密碼時,我需要顯示一個星號(*)或任何類似的符號。 我嘗試使用replace()方法,但它僅接受一個字符。 有沒有一種方法可以將所有字母和數字作為此replace方法的參數傳遞。 否則,掩蓋suer輸入的方法是什么。
我不能在這里使用console.readPassword技術,因為我需要String數據類型中的密碼(由用戶輸入)。
實際上,您不能使用replace方法。 通過使用它,用戶輸入仍然可見,而您只需要更改存儲在內存中的值即可。
如果您需要密碼作為字符串(出於安全原因不建議這樣做,但是無論如何...):
char[] pwd = console.readPassword();
String str = new String(pwd);
只需將char數組轉換為字符串即可。 Console.readPassword完全適合您的用例(讀取pwd:D)。
最初,它是char []而不是String,因為您可以使數組的內容為空,並且密碼可能丟失,而String可能會被合並並保留在您的內存中。
只需使用console.readPassword()
,然后從char[]
創建一個String
:
String passWord = new String(chars);
由於要輸出星號,因此不能使用console.readPassword。 取而代之的是,您必須自己做:禁用回顯,將輸入切換為非緩沖(按字符而不是按行)模式,逐個字符讀取密碼char,為每個讀取的char打印一個星號。 我建議您為Java尋找一個類似curses的庫(有很多方法,請參見針對此終端應用程序有什么類似curses的Java庫?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.