簡體   English   中英

屏蔽Java中的密碼字段

[英]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可能會被合並並保留在您的內存中。

這里有一個示例: Java編程語言 [java.sun.com] 中的密碼屏蔽

只需使用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.

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