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