Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/107: Рейтинг темы: голосов - 107, средняя оценка - 4.69
6 / 6 / 0
Регистрация: 17.09.2011
Сообщений: 78
1

Написать программу, запрашивающую пароль у пользователя, чтобы при вводе пароля отображались звездочки

22.09.2011, 23:26. Просмотров 19953. Ответов 12
Метки нет (Все метки)


Здравствуйте. Я тут поискал в форуме и в гугл поискал. Но не нашел нужное. Может кто то знает как осуществить ввод пароля на С++ и сделать так чтобы при вводе пароля отображались звездочки...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2011, 23:26
Ответы с готовыми решениями:

Написать программу, запрашивающую пароль пользователя (целое пятизначное число)
Плз :help::help: помагите мне решить эти задачки : (заранее огромное спасибо) :wall:1) Написать...

Как можно сделать так чтобы при вводе пароля в TextBox1-е появлялись звёздочки?
Уважаемые программеры я создал форму где вводится пароль в TextBox1-е, но пароль в нём видна. Как...

Подскажите как сделать чтобы при введении пароля отображались звёздачки а не сам пароль
Подскажите как сделать чтобы при введении пароля отображались звёздачки а не сам пароль <form...

Как при вводе вместо пароля отображать звёздочки?
Пишу окно авторизации у программы, на форму кинул виджет tkinter.Entry, это поле будет служить для...

12
-24 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
22.09.2011, 23:50 2
вводить пароль в строку и сравнивать с другой строкой с помощью функции strcmp(строка1,строка2) сравнивает в лексикографическом порядке две строки и возвращает целое значение, зависящее следующим образом от результата сравнения: меньше нуля если str1 < str2, ноль если str1 == str2, больше нуля еслиstr1 > str2. Или делать сравнения самому с помощью условия
1
Эксперт GPSS
521 / 392 / 92
Регистрация: 02.07.2010
Сообщений: 1,623
23.09.2011, 00:01 3
в EditBox есть свойство такое называеться пароль, делаешь его True и все а сравнение строк это дело техники
1
-24 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
23.09.2011, 00:08 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Rus");//Для руского текста если у вас Microsoft Visual Studio 
    char arr[50]="134679";   //Пароль134679
    char mas[50];        //Строка для ввода пароля
    cout<<"Введите пароль: ";
    cin>>mas;
    if(strcmp(arr,mas)==0) //Проверка если значение которое было возвращенно с функции равно 0 тогда 
        cout<<"Вы вошли в систему"<<endl; //Вывести сообшение
    else                    //Иначе
        cout<<"Пароль не правильный"<<endl; //Отказать в доступе
    return 0;
}
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10908 / 6833 / 1625
Регистрация: 25.07.2009
Сообщений: 12,540
23.09.2011, 00:10 5
de_hack, http://msdn.microsoft.com/en-u... S.80).aspx _getch() если в винде, при чтении очередного символа выводить звёздочку...
0
932 / 757 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
23.09.2011, 01:04 6
de_hack, вот набросок только для Windows. :cofee:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <windows.h>
void  dlg_password(char* pasw);
 
int  main(void) {
   char buf[32];
   printf("enter password: ");
   dlg_password(buf);
 
   if(! stricmp(buf, "neo")) 
         puts("\n\nYES...");
   else
         printf("\n\nInvalid password: %s !!!", buf);
 
   getchar();
   return 0;
}
 
void  dlg_password(char* pasw) {
   KEY_EVENT_RECORD key;
   INPUT_RECORD input[128];
   DWORD dread, i, mode = 0u;
   HANDLE hin  = GetStdHandle(STD_INPUT_HANDLE);
 
   GetConsoleMode(hin, &mode);
   SetConsoleMode(hin, ENABLE_WINDOW_INPUT);
 
   while(1) {
        if(ReadConsoleInput(hin, input, 128, &dread)) {
               for(i = 0u; i < dread; i++) {
                   if(input[i].EventType == KEY_EVENT) {
                         key = input[i].Event.KeyEvent;
                         if(! key.bKeyDown) 
                                continue;
                          if(key.wVirtualKeyCode == VK_RETURN) {
                               *pasw = '\0';
                                goto _abort;    
                          } else if(key.wVirtualKeyCode == VK_BACK) 
                                continue; 
                             else {
                                *pasw++ = key.uChar.AsciiChar;
                                putchar('*');
                           }        
                     }
                }
          }
    }
_abort:
    SetConsoleMode(hin, mode);
}
2
6 / 6 / 0
Регистрация: 17.09.2011
Сообщений: 78
23.09.2011, 21:19  [ТС] 7
Спасибо всем, ребята...
0
2 / 2 / 0
Регистрация: 26.12.2015
Сообщений: 79
26.12.2015, 16:57 8
Цитата Сообщение от Sylvos Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Rus");//Для руского текста если у вас Microsoft Visual Studio 
    char arr[50]="134679";   //Пароль134679
    char mas[50];        //Строка для ввода пароля
    cout<<"Введите пароль: ";
    cin>>mas;
    if(strcmp(arr,mas)==0) //Проверка если значение которое было возвращенно с функции равно 0 тогда 
        cout<<"Вы вошли в систему"<<endl; //Вывести сообшение
    else                    //Иначе
        cout<<"Пароль не правильный"<<endl; //Отказать в доступе
    return 0;
}
А как сделать так чтоб пароль был текстовый и с несколькими значениями ?
0
GbaLog-
26.12.2015, 17:18
  #9

Не по теме:

Цитата Сообщение от de_hack Посмотреть сообщение
Я тут поискал в форуме и в гугл поискал. Но не нашел нужное.
Ой да ладно вам притворяться, внизу страницы хотя бы с десяток таких же тем.

0
26 / 34 / 6
Регистрация: 21.11.2017
Сообщений: 195
09.01.2018, 20:26 10
Цитата Сообщение от de_hack Посмотреть сообщение
как осуществить ввод пароля на С++ и сделать так чтобы при вводе пароля отображались звездочки...
Может уже поздно, но возможно кому нибудь пригодиться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream> 
#include <conio.h>
#include <string>
using namespace std;
 
int main()  
{
    string pass;
    cout << "Введите пароль:" <<endl;
    int ch = 0;               // Переменная для символа.
    while (true)                // Создание бесконечного цикла.
    {
          ch = _getch();        // Помещаем код нажатой клавиши в переменную.
          if (ch == 13)         // Установка Enter на прерывание цикла.
          {
                 break;         // Прерывание цикла.
          }
          if (ch == 27)   // Установка Esc на закрытие консоли.
          { 
                 exit (0);      // Выход из консоли.
          }
          if (ch == 8)     // Установка Backspace на удаление символов.
          {
                  
               cout << (char)8 << ' ' <<char(8);  
           /*Смещение курсора на одну позицию  в лево вывод пробела и 
           снова смещение курсора влево, то есть при нажатии Backspace 
           символ будет стираться, а курсор перемещаеться. */
               
               if (!pass.empty())
             /*Если строка pass не являеться пустой, то из неё 
             можно удалять  последний символ (Иначе закрывалась консоль.)*/
             
               pass.erase(pass.length()-1); 
               // позволяет удалить последний символ из строки pass
          }
         
          else                   
          { 
          cout << '*';            // Замена символов на *
          pass += (char)ch;       // Преврашение кода из целого числа в символ.
          }
    }          
        if(pass == "123456")           //Проверка пароля. (пароль 123456)
       {
    
       cout << "\nВы вошли в систему!!!" << '\n'; 
}
    else    
 {                      
        cout << "\nПароль не правильный!!!" << '\n'; 
}      
            
    system ("pause"); 
    return 0;
} 
/*
 
_getch();  Функция которые вводит данные через консоль, не 
отображает их на экранею Так как она вводит один символ то 
 исполюзуеться бесконечный цикл while (true).
 
 Удаляем символы.
 pass.erase(pass.length()-1). 
 Передаем в функцию pass.erase число на единицу меньше чем длина текущей строки.
Получение длины строки: pass.length().
Вычитание последнего символа из строки: -1 (Один символ одно нажатие клавиши).
 
pass += (char)ch; То же самое что и pass = pass + (char)ch;
 
Вместо << endl; можно использовать << '\n'; или cout << " ... \n";
 
 */
1
Эксперт С++
8406 / 3942 / 863
Регистрация: 15.11.2014
Сообщений: 8,891
09.01.2018, 21:13 11
Цитата Сообщение от de_hack Посмотреть сообщение
как осуществить ввод пароля на С++ и сделать так чтобы при вводе пароля отображались звездочки...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include <cassert>
#include <locale>
#include <limits>
#include <string>
#include <sstream>
 
#include <conio.h>
 
 
void clear_input() noexcept
{
    std::cin.clear(),
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    assert(std::cin);
}
 
template<typename Data, class Checker> 
void input(const char* msg, const char* help, const Checker& checker, Data& dst, const bool check = true)
{
    for (;;)
    {
        assert(std::cout);
        std::cout << msg; 
        std::string accumulate;
        for (;;)
        {
            auto code = _getch();
            if (code == 13 || code == 27)
                break;
 
            if (code == 224)
                _getch(),
                code = 8;
                
            if(code == 8)
            {
                std::cout << "\b \b";
                if(!accumulate.empty())
                    accumulate.pop_back();
            }
            else
            {
                const auto ch = static_cast<char>(code);
                accumulate += ch;
                std::cout << "*";
            }
        }
 
        std::stringstream ss(accumulate);
        assert(ss);
        ss >> dst;
 
        const bool invalid = check && !ss;
        if (invalid || !checker(dst))
            std::cout << "\nerror: " << help;
        else
            break;
    }
}
 
template<typename Data> 
void input(const char* msg, const char* help, Data& dst, const bool check = true)
{ 
    const auto lambda = [](const Data&) { return true; };
    input(msg, help, lambda, dst, check);
}
 
 
int main(int argc, char* argv[])
{
    (void)argc;
    (void)argv;
    ::setlocale(LC_ALL, "");
 
    // допустим мы ожидаемы пароль:
    const char* expected_password = "123";
 
    // тогда валидатор введенного пароля имеет вид:
    const auto checker 
        = [expected_password](const std::string& value) 
        { return value == expected_password; };
 
    // в случае успеха 
    // результат ввода окажется в этой переменной:
    std::string result;
 
    input("\nenter password: ",
          "incorrect password!",
          checker,
          result
    );
 
    std::cout << "\naccess is allowed\n";
}
1
Mournful Max
10.01.2018, 00:18
  #12

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
C++
72
73
(void)argc;
(void)argv;
Это зачем?) Чтобы компилятор не ругался на неиспользованные переменные? :)

0
Эксперт С++
8406 / 3942 / 863
Регистрация: 15.11.2014
Сообщений: 8,891
10.01.2018, 01:16 13
Цитата Сообщение от Captain Maxee Посмотреть сообщение
Это зачем?) Чтобы компилятор не ругался на неиспользованные переменные?
ога
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2018, 01:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Написать диалоговую программу, запрашивающую пароль
Необходимо написать программу диалога, например пароль.

Написать программу, запрашивающую дату рождения пользователя и выводящую поздравление, либо число дней до ДР
1. Напишите программу, которая запрашивает дату рождения пользователя и если день рождения в...

Написать программу, запрашивающую у пользователя строку и помещающую все слова с заданной длиной в файл
Написать программу, запрашивающую у пользователя строку и помещающую все слова с заданной длиной в...

Как реализовать проверку, при вводе пользователя и пароля, забитых в БД
Имеется БД в аксес с одной таблице (поля пользователь и поле пароль). На форме в шарпе, есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.