客官请听题,请写一段代码从控制台上读取用户输入密码。不过有几点在实现的时候需要特别注意:

1. 最基本的是用户输入的不应该直接明文显示出来,需要用特殊字符显示。

2. 不要用明文储存用户输入的密码。

3. 要考虑到一些特殊按键的输入。

自己写写试试看?

 

下面是我的实现:

private SecureString ReadPassword()

{

    ConsoleKeyInfo key;

    SecureString password = new SecureString();

    key = Console.ReadKey(true);

    while (key.Key != ConsoleKey.Enter)

    {

        //如果用户退格需要将最后一个字符在界面上和字符串里同时删除

        if (key.Key == ConsoleKey.Backspace)

        {

            if (password.Length > 0)

            {

                password.RemoveAt(password.Length - 1);

                //利用控制字符\b退格,但是退格是不会删除最后一个字符的,用空格覆盖了最后一个字符。

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

            }

        }

        //忽略特殊控制字符,比如说tab, esc等

        else if (key.KeyChar >= 32 && key.KeyChar <= 126)

        {

            password.AppendChar(key.KeyChar);

            Console.Write("*");

        }

        key = Console.ReadKey(true);

    }

    Console.WriteLine();

    password.MakeReadOnly();

    return password;

}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
  • 2019-08-30
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
猜你喜欢
  • 2022-12-23
  • 2021-08-03
  • 2022-12-23
  • 2022-12-23
  • 2021-07-18
  • 2021-12-03
相关资源
相似解决方案