Составить программу которая запрашивает пароль до тех пор пока он не будет правильно введен

Я не знаю на сколько кому эти задачи нужны, дело в том их целесообразно решать, после прочтения соответствующих уроков, которых куча, а копипастом заниматься нехочу.

Но вот ещё задача:

Напишите программу, которая будет «спрашивать» правильный пароль, до тех пор, пока он не будет введен. Правильный пароль пусть будет «Пароль».

Решение:

Вообще решать можно по разному, но я сделал при помощи бесконечного цикла, такой приём часто используют кто кодит для микроконтроллеров, зацикливают main, а сама программа уже выполняется по прирываниям.

Тут-же всё просто:

static void Main(string[] args) < string Parol = «Пароль»; //Правильный пароль string UserParol; do < Console.Write(«Скажите пароль: «); UserParol = Console.ReadLine(); if (Parol == UserParol) < Console.Write(«Пароль верен !»); break; >else < Console.Write(«Пароль не верен, попробуйте ещё раз !n»); >> while (true); Console.ReadKey(); >

Единственное я всегда пишу while (1), но в С# что-то несканало, пришлось сделать while (true) что в общем-то одно и тоже.

Решение задачи «Проверка пароля» по теме «Определение и вызов функции. Инструкция def»

Ну и далее сревнение, в случае правильного ответа, выход их цикла, иначе будет постоянно спрашивать пароль !

upload_2015-10-1_15-19-58.png

Хакер — не преступник. Взлом — для искусства. Смысл — в свободе.
Нравится: 3

0x0

VIP

VIP
Регистрация 01.09.2016 Сообщения 11 Репутация 8

Вот, кстати, в случае паролей, лучше сразу упомянуть, что для безопасности с ними надо работать через SecureString 🙂

rain.hf

Пользователь

Форумчанин
Регистрация 08.12.2015 Сообщения 111 Репутация 87

#include #include #include using namespace std; bool password_is_valid(string password) < string valid_pass = «ru-sfera.pw»; if (valid_pass == password) return true; else return false; >void get_pass() < string user_pass; cout else < cout > int main()
Нравится: 2

Читайте также:
Digitronic mp48 программа для настройки

0x0

VIP

VIP
Регистрация 01.09.2016 Сообщения 11 Репутация 8

Немного проапргейдим решение, добавим использование SecureString.
Основная идея в том, что нельзя сохранять пароль в строке, так как GC его не сразу прибьёт после использования, и на какое-то время пароль еще будет доступен в памяти, и если следом выполняется вредоносный код, то он может получить доступ к этому паролю.
Так же не красиво, когда пароль вводится открытым текстом в консоли.
Пароль в комментарии к массиву байт хеша 🙂

private static void Main(string[] args) < var md5 = MD5.Create(); int count = 0; int maxCount = 5; do < if (count >maxCount) < Console.WriteLine(«Проспитесь!»); Console.ReadKey(); return; >if (count++ > 0) < Console.WriteLine(«Пароль не верен, попробуйте ещё раз n»); >Console.Write(«Введите пароль: n»); > while (!Passwd.SequenceEqual(HashSecureString(GetPassword(), bytes => md5.ComputeHash(bytes)))); Console.WriteLine(«Свершилось. «); Console.ReadKey(); > public static SecureString GetPassword() < var pwd = new SecureString(); while (true) < ConsoleKeyInfo i = Console.ReadKey(true); if (i.Key == ConsoleKey.Enter) < break; >else if (i.Key == ConsoleKey.Backspace) < if (pwd.Length >0) < pwd.RemoveAt(pwd.Length — 1); Console.Write(«b b»); >> else < pwd.AppendChar(i.KeyChar); Console.Write(«*»); >> Console.Write(«n»); return pwd; > //Pizdec private static byte[] Passwd = new byte[] < 59, 209, 17, 65, 32, 125, 141, 46, 8, 140, 141, 237, 149, 175, 121, 137 >; private static byte[] HashSecureString(SecureString input, Func hash) < var bstr = Marshal.SecureStringToBSTR(input); var length = Marshal.ReadInt32(bstr, -4); var bytes = new byte[length]; var bytesPin = GCHandle.Alloc(bytes, GCHandleType.Pinned); try < Marshal.Copy(bstr, bytes, 0, length); Marshal.ZeroFreeBSTR(bstr); return hash(bytes); >finally < for (var i = 0; i < bytes.Length; i++) < bytes[i] = 0; >bytesPin.Free(); > >

Источник: ru-sfera.pw

Создание программы которая запрашивает и проверяет правильность ввода пароля в командной строке

Читайте также:
Какой язык программирования использовать для создания программ

20 баллов. С циклом while

KnowsUser1: использование транслита в качестве имён в программе считается дурным тоном. Если очень надо кириллицу, явно укажите программе кодирование utf-8 и используйте символы кириллицы.
# -*- coding: utf-8 -*-
моя_переменная = input(‘введите:’)
print(моя_переменная)
>>> введите:

FunnyPro: Простите,не понял

KnowsUser1: Имя «kod» в вашей программе написано транслитом от русского «Код». Так делать нехорошо. Это смотрится не красиво. Вы бы могли использовать имя password (pass, pw, psw) или добавить в начало программы строку с указанием кодировки, поддерживающей кириллицу, и использовать нормальное русское «код».

Источник: sous-otvet.net

Блог IT для Windows

Программа ввода пароля, до тех пор, пока он не станет верным на С++

23.07.2014 15:08 Администратор

E-mail Печать PDF

(8 голоса, среднее 5.00 из 5)

Задача: написать приложение, запрашивающее пароль, пароль вводится то тех пор, пока не будет введен верный.

Пример работы программы

Результат работы программы

Среда программирования Borland C++ 3.1

Решение (листинг приложения):

#include //необходимо для getch #include //необходимо для cin и cout void main () < int password1, password2=8888; //задаем пароль do < cout>password1; //ввод пользователем пароля > while(password1!=password2); //сравниваем пароль cout

Источник: winadminhelp.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru