java - 如何在 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 时输入
如果问的问题不清楚,请告诉我。先谢谢了,注意安全!!
解决方案
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。
推荐阅读
- ms-access - 访问 VBA DLOOKUP
- python - 使用python在Photoshop中选择一个区域返回错误
- powerapps - 为什么我不允许在 PowerApps 中为列名使用动态字符串?
- java - 添加外部Jar文件后Java中无法访问的语句
- json - Spark - 从 JSON 创建一个 DataFrame - 只处理第一行
- google-apps-marketplace - 测试 Gmail 市场应用流程
- r - 访问 gregexpr 的结果
- sql - 如何获取使用 SQL Server 更改的先前数据
- c++ - 用于 linux 的 c++ 上的代理脚本
- sql - 转换 SQL Server 日期格式