Ввод пароля с консоли.
От: ___petya___  
Дата: 06.12.07 17:21
Оценка:
Есть три вопроса:
1. Как получать код вводимого с клавиатуры символа сразу после нажатия на клавишу(ввод из консоли)? Console.Read возвращает введённый символ только после нажатия на Enter. Ввод пароля целиком (одной строкой) не подойдёт, т.к. нужно запоминать время ввода каждого символа.
2. Как подавлять вывод вводимых символов на экран или заменять их на звёздочки?
3. Как преобразовать тип string в тип byte[] ?

Буду крайне признателен за помощь.
Re: Ввод пароля с консоли.
От: _FRED_ Черногория
Дата: 06.12.07 17:40
Оценка:
Здравствуйте, ___petya___, Вы писали:

___>1. Как получать код вводимого с клавиатуры символа сразу после нажатия на клавишу(ввод из консоли)? Console.Read возвращает введённый символ только после нажатия на Enter. Ввод пароля целиком (одной строкой) не подойдёт, т.к. нужно запоминать время ввода каждого символа.

___>2. Как подавлять вывод вводимых символов на экран или заменять их на звёздочки?

Console.ReadKey(true)

___>3. Как преобразовать тип string в тип byte[] ?


System.Text.Encoding.GetBytes
Help will always be given at Hogwarts to those who ask for it.
Ввод пароля с консоли.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 07.12.07 04:21
Оценка:
#Имя: FAQ.dotnet.console.EnterPassword
Здравствуйте, ___petya___, Вы писали:

___>2. Как подавлять вывод вводимых символов на экран или заменять их на звёздочки?


        string _password;
    
        static bool EnterPassword()
        {
            Console.Write("password: ");

            _password="";

            while(true)
            {
                ConsoleKeyInfo cki = Console.ReadKey(true);

                if(cki.Key == ConsoleKey.Enter)
                {
                    Console.WriteLine();

                    return true;
                }
                else
                {
                    if(cki.Key == ConsoleKey.Escape)
                    {
                        _password = "";

                        return false;
                    }
                    else
                    {
                        if(Char.IsLetterOrDigit(cki.KeyChar) || Char.IsSymbol(cki.KeyChar))
                        {
                            _password+=cki.KeyChar;
                            Console.Write("*");
                        }
                        else
                        {
                            if(cki.Key == ConsoleKey.Backspace)
                            {
                                if(_password.Length > 0)
                                {
                                    ReplaceEntry(" ", Console.CursorLeft - 1, Console.CursorTop);
                                    _password = _password.Remove(_password.Length - 1);
                                }
                            }
                            else
                            {
                                Debug.Assert(false, "Этот случай невозможен!   ");
                            }
                        }
                    }
                }
            }
        }
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re: Ввод пароля с консоли.
От: _FRED_ Черногория
Дата: 07.12.07 06:28
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

___>>2. Как подавлять вывод вводимых символов на экран или заменять их на звёздочки?


OE>        string _password;


Help will always be given at Hogwarts to those who ask for it.
Re[2]: Ввод пароля с консоли.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 07.12.07 08:18
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>
  • Здесь самое место StringBuilder-у

    теоритически — да, практически — врядли это будет причиной тормозов при вводе пароля _с_клавитатуры_
    ... << RSDN@Home 1.2.0 alpha rev. 786>>
  • Re: Ввод пароля с консоли.
    От: ___petya___  
    Дата: 08.12.07 13:57
    Оценка:
    Спасибо всем ответившим.
    Re[2]: Ввод пароля с консоли.
    От: jenyavb  
    Дата: 09.12.07 09:41
    Оценка:
    Здравствуйте, _FRED_, Вы писали:

    _FR>
  • Здесь самое место StringBuilder-у
    А SecureString?
    ... << RSDN@Home 1.2.0 alpha rev. 782>>
  • Re[3]: Ввод пароля с консоли.
    От: _FRED_ Черногория
    Дата: 10.12.07 11:07
    Оценка:
    Здравствуйте, jenyavb, Вы писали:

    _FR>>
  • Здесь самое место StringBuilder-у
    J>А SecureString?

    А это даже ещё лучше. Ведь дело не в скорости (в данном случае о ней вообще можно не рассуждать, как земетил
    Автор: Odi$$ey
    Дата: 07.12.07
    Odi$$ey), а в использовании идеалогически верных инструментов.
  • Help will always be given at Hogwarts to those who ask for it.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.