首页 > 解决方案 > 如何在 java 输出控制台中加密用户输入(例如:密码)

问题描述

用例: 我的目标是每当用户尝试在控制台输出屏幕中提供用户输入(例如:密码)而不是密码文本(例如在输出控制台中:输入密码:********(但密码是 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 时输入

如果问的问题不清楚,请告诉我。先谢谢了,注意安全!!

标签: java

解决方案


JDK提供Console了处理这些场景的类,它提供了readPassword来通过掩码读取密码,但它不显示*。

这是一个小例子。

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));
}
}

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


推荐阅读