Csharp/C Sharp/Security/SecureString

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

MakeReadOnly, RemoveAt

 

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);
                }
            }
        }
    }
}