为了账号安全,请及时绑定邮箱和手机立即绑定

密码屏蔽控制台应用程序

密码屏蔽控制台应用程序

C#
白衣染霜花 2019-11-05 15:36:36
我尝试了以下代码...string pass = "";Console.Write("Enter your password: ");ConsoleKeyInfo key;do{    key = Console.ReadKey(true);    // Backspace Should Not Work    if (key.Key != ConsoleKey.Backspace)    {        pass += key.KeyChar;        Console.Write("*");    }    else    {        Console.Write("\b");    }}// Stops Receving Keys Once Enter is Pressedwhile (key.Key != ConsoleKey.Enter);Console.WriteLine();Console.WriteLine("The Password You entered is : " + pass);但是这种方式在输入密码时不能使用退格功能。有什么建议吗?
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

为此,您应该使用System.Security.SecureString


public SecureString GetPassword()

{

    var pwd = new SecureString();

    while (true)

    {

        ConsoleKeyInfo i = Console.ReadKey(true);

        if (i.Key == ConsoleKey.Enter)

        {

            break;

        }

        else if (i.Key == ConsoleKey.Backspace)

        {

            if (pwd.Length > 0)

            {

                pwd.RemoveAt(pwd.Length - 1);

                Console.Write("\b \b");

            }

        }

        else if (i.KeyChar != '\u0000' ) // KeyChar == '\u0000' if the key pressed does not correspond to a printable character, e.g. F1, Pause-Break, etc

        {

            pwd.AppendChar(i.KeyChar);

            Console.Write("*");

        }

    }

    return pwd;

}


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 370 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信