如果是在 GUI 中要求用户输入密码,各 UI 框架基本都提供了用于输入密码的控件;在这些控件中,用户在输入密码的时候会显示掩码。然而对于控制台程序来说,并没有用于输入密码的原生方法。
本文将讲述一种在控制台中输入密码,并仅显示掩码的方法。
开始简单的程序
让我们开始一个简单的 .NET Core 控制台程序。
static void Main(string[] args)
{
Console.Write("用户名: ");
var userName = Console.ReadLine();
Console.Write("密 码: ");
var password = Console.ReadLine();
Console.ReadKey();
}
密码直接显示,暴露无遗。而且,由于我们后面持续不断的有输出,控制台不会清除掉这些输出,所以密码会一直显示到缓冲区中——这显然是不能接受的。
写一个让用户输入密码并显示掩码的方法
既然控制台本身并没有提供可以为密码进行掩码的方法,那么我们只能自己来写了:
public static SecureString ReadPassword(string mask = "*")
{
var password =