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

Генератор паролей на C++

22.04.2018, 20:31. Показов 7775. Ответов 6

Пока регистрировался на сайте задумался о генераторе паролей и решил написать свой. Хочу им поделиться. Делитесь своим мнением.
А вот и код
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
#include <iostream>
#include <algorithm>
#include <time.h>
#include <stdlib.h>
#include <fstream>
 
using std::cout;
using std::cin;
using std::endl;
 
class PassGen {
 
public:
    void displayMessage()
    {
        int passLenght;
        int numOfPasswords;
        char * filename = new char;
 
        cout << "Введите длину пароля для генерации: ";
        cin >> passLenght;
        cout << "Введите количество паролей для генерации: ";
        cin >> numOfPasswords;
        cout << "Будет сгенерировано паролей: " << numOfPasswords << "." << endl;
        cout << endl;
        cout << "Введите им¤ файла для записи: ";
        cin >> filename;
 
        std::ofstream outFile(filename);
 
        for (int k = 0; k < numOfPasswords; k++) {
            for (int i = 0; i < passLenght; ++i) {    
                numOfChars(passLenght);
                passGenerator(passLenght);
                outFile << password [i];
            }
            outFile << endl;
        }
        outFile.close();
 
        cout << "Пароли успешно сгенерированы и записаны в файл " << filename << "" << endl;
    }
 
    void passGenerator(int passLenght)
    {
        password = new char [passLenght];
 
        for (int i = 0; i < numOfNumbers; ++i) {
            password [i] = char(rand() % 10 + 48);
        }
        for (int i = numOfNumbers; i < numOfNumbers + numOfBigChars; ++i) {
            password [i] = char(rand() % 26 + 65);
        }
        for (int i = numOfNumbers + numOfBigChars; i < passLenght; ++i) {
            password [i] = char(rand() % 26 + 97);
        }
         std::random_shuffle(password, password + passLenght);        
    }
 
    void numOfChars(int passLenght)
    {
        numOfSmallChars = rand() % passLenght;
        int charRandEnd = passLenght - numOfSmallChars;
        numOfBigChars = rand() % charRandEnd;
        numOfNumbers = passLenght - numOfSmallChars - numOfBigChars;
    }
 
private:
    int numOfSmallChars;
    int numOfBigChars;
    int numOfNumbers;
    char * password;
};
 
int main()
{
    setlocale (0, "");
    srand(time(NULL));
    PassGen * pass = new PassGen;
    pass->displayMessage();
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2018, 20:31
Ответы с готовыми решениями:

Создать генератор паролей в котором можно указать длину пароля и количество паролей
Помогите пожалуйста! Задание: Нужно создать генератор паролей в котором можно указать длину пароля...

Генератор паролей
Привет юзерам cyberforum'а. Требуется следующее: Написать программу - генератор паролей....

Генератор паролей
нужно сгенерировать пароль хотя что бы большие латинские буквы, Коды английских символов -...

Генератор паролей
Представляю Вам генератор паролей на C++. Спасибо пользователю nammidd за помощь в изменении...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
6
1118 / 849 / 392
Регистрация: 30.10.2017
Сообщений: 2,378
22.04.2018, 20:40 2
Недостатки.

1. Пароль имеет три степени защиты из четырех. Четыре степени: прописные буквы, строчные буквы, цифры, специальные символы.
2. В сгенерированном пароле может быть менее трех степеней защиты.
3. Смотря какая область применения генератора. Если программный код попадет в руки хакера, то с помощью дизассемблера и знания примерной даты генерации пароля можно подобрать пароль. С исходным кодом это еще проще.
0
Модератор
1623 / 1078 / 485
Регистрация: 17.07.2012
Сообщений: 5,308
22.04.2018, 21:29 3
Странный код какой-то.
Цитата Сообщение от SmileNumber1 Посмотреть сообщение
C++
18
char * filename = new char;
Добавлено через 51 секунду
Сишные массивы лучше на вектора и строки менять.
0
Jesus loves me
Эксперт С++
5164 / 3137 / 353
Регистрация: 12.12.2009
Сообщений: 7,925
Записей в блоге: 2
23.04.2018, 10:57 4
Почему метод displayMessage умеет
1. задавать вопросы пользователю
2. принимать данные от пользователя
3. открывать и закрывать файл
4. генерировать пароли
5. вылазить за границы памяти
6. делать утечку памяти

и при все при этом он называется displayMessage

???

Почему методы passGenerator и numOfChars открытые, если они не нужны снаружи?
0
Модератор
1623 / 1078 / 485
Регистрация: 17.07.2012
Сообщений: 5,308
23.04.2018, 11:01 5
О, так у него тут еще и класс есть. А разве тут есть смысл ООП использовать?
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 566
23.04.2018, 11:42 6
Цитата Сообщение от Новичок Посмотреть сообщение
А разве тут есть смысл ООП использовать?
Возможно пpактикует ООП , или начал его учить.

Добавлено через 3 минуты
Pаз это ООП, то я бы добавил публичные функции, котоpые бы возвpащали значения пpиватных полей.
C++
1
2
3
4
    int numOfSmallChars;
    int numOfBigChars;
    int numOfNumbers;
    char * password;
По типу
C++
1
2
3
4
5
6
int GetNumOfBigChars() 
{
 
return this->numOfBigChars;
 
}
если есть возможность изменять эти поля в ходе pаботы,то добавил бы еще и стандаpтные Set фунции
C++
1
2
3
4
5
6
void SetNumOfBigChars(int num) 
{
 
this->numOfBigChars = num;
 
}
0
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 7
28.03.2021, 00:02 7
Простой и короткий генератор паролей на C++:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <time.h>
 
using namespace std;
 
void main()
{
    int N = 2000;
    char str[] { "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+,-./|\\\"':;<=>?@[]^_`{}~" }; 
    int strN = 94; // индекс последнего элемента в массиве
    srand(time(NULL)); //инициализируем генератор случайных чисел
    char* pass = new char[N + 1]; //выделяем память для строки пароля
    for (int i = 0; i < N; i++)
    {
        pass[i] = str[rand() % strN]; //вставляем случайный символ
    }
    pass[N] = 0; //записываем в конец строки признак конца строки
    cout << pass; //выводим пароль на экран
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2021, 00:02

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

Генератор паролей
Кто может чётко написать коментарии для генератора паролей Просто я учусь программировать на С++ и...

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

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

генератор паролей
кто нибудь может показать программку генератор паролей?


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

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

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