📜  c# caractère cacher mot de passe - C# (1)

📅  最后修改于: 2023-12-03 14:39:42.432000             🧑  作者: Mango

隐藏密码中的C#字符 - C#

在C#编程中,我们经常需要处理密码和敏感信息。为了增加安全性,我们需要确保在用户输入密码时,字符不会在控制台上显示出来。C#提供了一种简单的方法将字符隐藏起来。

方法一:使用Console.ReadKey方法
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方法从控制台读取按键信息,将按键字符合并为密码字符串,并在控制台上显示星号代替实际字符,从而隐藏了密码。最后,我们将隐藏的密码打印出来。

方法二:使用SecureString类
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#中隐藏密码的两种常见方法。根据你的需求和安全要求,你可以选择使用其中的任何一种方法来隐藏密码。