所以我有這個應用程序,我從哪裏讀取用戶輸入命令提示符,當用戶輸入他/她的密碼,我想將其隱藏,使得其他人無法看到這樣的:如何阻止命令提示符顯示我的密碼,而我輸入它到我的java程序
Please enter your password below
this is password
我想表明它是這樣的:
Please enter your password below
****************
那麼,有沒有在Java控制檯應用這樣的方法嗎?
所以我有這個應用程序,我從哪裏讀取用戶輸入命令提示符,當用戶輸入他/她的密碼,我想將其隱藏,使得其他人無法看到這樣的:如何阻止命令提示符顯示我的密碼,而我輸入它到我的java程序
Please enter your password below
this is password
我想表明它是這樣的:
Please enter your password below
****************
那麼,有沒有在Java控制檯應用這樣的方法嗎?
看看在Console
類,它有readPassword()
語法:
public char[] readPassword(String fmt,Object... args)
提供一個格式化提示,然後從讀取,禁用回顯的控制檯密碼或口令。
參數:
FMT - 作爲用於提示文本格式字符串語法描述的格式字符串。
參數 - 格式字符串中格式說明符引用的參數。如果有更多的參數比格式說明符, 額外的參數被忽略。參數的最大數量爲 ,受限於Java虛擬機規範 定義的Java數組的最大維數。
返回 - 包含從控制檯,不包括任何行終止 字符讀取的密碼或口令的字符數組,或null如果流的端已經達到。
剛剛格式化您的答案爲可讀性。 –
@LittleChild沒有問題歡呼 –
從答案兩者指向註釋:
import java.io.Console;
public class Main {
public void passwordExample() {
Console console = System.console();
if (console == null) {
System.out.println("Couldn't get Console instance");
System.exit(0);
}
console.printf("Testing password%n");
char passwordArray[] = console.readPassword("Enter your secret password: ");
console.printf("Password entered was: %s%n", new String(passwordArray));
}
public static void main(String[] args) {
new Main().passwordExample();
}
}
需要注意的事情是,你得到回char[]
而不是String
。這是出於安全原因,關於SO的這個相同主題還有另一個很好的答案。工作完成後,您應該通過覆蓋它來銷燬此char[]
。 String
s可以保留更長的時間直到GC收集它們,這可能是一個安全風險。
從命令行運行該示例,而不是從IDE運行該示例。它可能不起作用。
@Dlotan重複!爲什麼?這裏有很多問題,可能這個人不能找到關於這個問題的相關問題。你是警察嗎? –