【发布时间】:2011-03-25 04:22:35
【问题描述】:
我尝试了以下代码...
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 Pressed
while (key.Key != ConsoleKey.Enter);
Console.WriteLine();
Console.WriteLine("The Password You entered is : " + pass);
但是这样输入密码时退格功能不起作用。 有什么建议吗?
【问题讨论】:
-
我建议您不要将任何内容回显到控制台,因为这会暴露密码的长度。
-
@RayCheng - 很公平,但很少有用户界面(除了某些 Unix 系统)根本没有回应。为了与其他应用和网站保持一致的用户体验,最好显示 * 字符。
-
@StephenHolt 我相当确定我遇到的每个基于终端的密码输入都选择不向终端回显任何内容。鉴于安全优势以及这是 Unix 世界中众所周知的约定,我个人认为不回显是正确的选择,除非您认为您的用户群可能不熟悉终端的使用(在这种情况下无论如何,最好还是使用 GUI)。
标签: c# passwords console-application user-input masking