📅  最后修改于: 2023-12-03 14:39:42.432000             🧑  作者: Mango
在C#编程中,我们经常需要处理密码和敏感信息。为了增加安全性,我们需要确保在用户输入密码时,字符不会在控制台上显示出来。C#提供了一种简单的方法将字符隐藏起来。
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Enter password:");
string password = string.Empty;
while (true)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.Enter)
{
Console.WriteLine();
break;
}
password += keyInfo.KeyChar;
Console.Write("*");
}
Console.WriteLine("Password: " + password);
}
}
上面的代码示例使用了Console.ReadKey
方法从控制台读取按键信息,将按键字符合并为密码字符串,并在控制台上显示星号代替实际字符,从而隐藏了密码。最后,我们将隐藏的密码打印出来。
using System;
using System.Runtime.InteropServices;
using System.Security;
public class Program
{
public static void Main()
{
Console.WriteLine("Enter password:");
SecureString password = new SecureString();
while (true)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.Enter)
{
Console.WriteLine();
break;
}
password.AppendChar(keyInfo.KeyChar);
Console.Write("*");
}
// 将SecureString转换为明文字符串(非推荐操作)
IntPtr ptr = IntPtr.Zero;
try
{
ptr = Marshal.SecureStringToBSTR(password);
string plainTextPassword = Marshal.PtrToStringBSTR(ptr);
Console.WriteLine("Password: " + plainTextPassword);
}
finally
{
Marshal.ZeroFreeBSTR(ptr);
password.Dispose();
}
}
}
在这个示例中,我们使用了SecureString
类来安全地存储密码。SecureString
是一个加密的字符串,使用AppendChar
方法逐个添加字符,同时用星号替代实际字符。最后,我们将SecureString
转换为明文字符串(非推荐操作)以打印出隐藏的密码。
请注意,这种方法比较安全,因为不会在内存中明文存储密码,但仍然需要小心处理密码数据。
以上就是在C#中隐藏密码的两种常见方法。根据你的需求和安全要求,你可以选择使用其中的任何一种方法来隐藏密码。