如何在java输出控制台中加密用户输入(例如ex:密码)[重复]

 收藏

用例: 我的目标是每当用户尝试在控制台输出屏幕上输入用户输入(例如:密码)而不是密码文本时(例如,在输出控制台中输入密码:********(但密码为Qwerty @)。 123,但是当用户键入Qwerty @ 123时,应在控制台中将其替换为*********)),应显示星号。是否可以这样做,我也看到了一些基于密码加密的视频在Java中,但未找到与我的问题相关的任何内容。

import java.util.*;
public class abc{
public static void main(String args[]){
String g;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the password : ");
g=sc.nextLine();
}
}

我得到的输出: 输入密码:Qwerty @ 123

输出我除了: 输入密码:用户输入Qwerty @ 123时应输入**********

如果询问的问题不清楚,请告诉我。 预先感谢,请放心!!

回复
  • LOL 回复

    JDK provides Console class to handle these scenarios, it provides readPassword to read password by masking, it doesn't display *'s though.

    这是一个小例子。

    import java.io.Console;
    public class Library {
    public static void main(String[] args) {
        Console console = System.console();
        char[] passwordArray = console.readPassword("Enter your password: ");
        console.printf("Password is: %s%n", new String(passwordArray));
    }
    }
    

    注意:这仅适用于System的控制台,不适用于IDE。