Csharp/C Sharp/Security/SecureString

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

MakeReadOnly, RemoveAt

<source lang="csharp">

using System; using System.Security; using System.Diagnostics; class MainClass {

   public static SecureString ReadString() {
       SecureString str = new SecureString();
       ConsoleKeyInfo nextChar = Console.ReadKey(true);
       while (nextChar.Key != ConsoleKey.Enter) {
           if (nextChar.Key == ConsoleKey.Backspace) {
               if (str.Length > 0) {
                   str.RemoveAt(str.Length - 1);
                   Console.Write(nextChar.KeyChar+" " +nextChar.KeyChar);
               } else {
                   Console.Beep();
               }
           } else {
               str.AppendChar(nextChar.KeyChar);
               Console.Write("*");
           }
           nextChar = Console.ReadKey(true);
       }
       str.MakeReadOnly();
       return str;
   }
   public static void Main() {
       string user = "user1";
       Console.Write("Enter the user"s password: ");
       using (SecureString pword = ReadString()) {
           ProcessStartInfo startInfo = new ProcessStartInfo();
           startInfo.FileName = "notepad.exe";
           startInfo.UserName = user;
           startInfo.Password = pword;
           startInfo.UseShellExecute = false;
           using (Process process = new Process()) {
               process.StartInfo = startInfo;
               try {
                   process.Start();
               } catch (Exception ex) {
                   Console.WriteLine("\n\nCould not start Notepad process.");
                   Console.WriteLine(ex);
               }
           }
       }
   }

}

</source>