Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
1

Генератор пароля. Оцените его компактность и непредсказуемость

03.02.2014, 09:09. Показов 2026. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал за 10 минут генератор. Оцените компактность и непредсказуемость(рандомность) пароля, пожалуйста
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
#include<conio.h>
#include<iostream>
#include<time.h>
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    const int N = 30;
    int c;
    char Password[N];
    int q;
    cout<<"\t\tГенератор пароля(до 30 символов)\n\n";
    cout<<"Введите кол-во символов для генерации: ";
    cin>>c;
    for(int i(0); i < c; i++){
        q = (rand()%3);
        if(q == 0)
        Password[i] = (char) (rand() % 26) + 65;
        else if(q == 1)
        Password[i] = (char) (rand() % 26) + 97;
        else
        Password[i] = (char) (rand() % 10) + 48;
    }
    for(int i(c); i < N; i++)
        Password[i] = '\0';
    cout<<"\n\nВаш новый пароль: ";
    for(int i(0); i < c; i++)cout<<Password[i];
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}

Не по теме:

И подскажите как копировать в буфер обмена :)

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2014, 09:09
Ответы с готовыми решениями:

При смене пароля выдается сообщение, и его выкидывает на окно смены пароля
При создании нового пользователя ему выдается временный пароль, который нужно сменить при первом...

Генератор пароля
Добрый вечер. Нужно написать программу-генератор паролей. Программа должна выполнять следующие...

Генератор пароля
Помогите правильно записать код (выдает ошибку)

Генератор пароля
Помогите пожалуйста написать генератор паролей в С++, условие: 26 символов - ограничение, должен...

15
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
03.02.2014, 09:16 2
Цитата Сообщение от Xopecc Посмотреть сообщение
И подскажите как копировать в буфер обмена
http://stackoverflow.com/quest... board-in-c
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 09:18  [ТС] 3
Петррр, а что-то на русском есть ? английский не до конца понимаю
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.02.2014, 09:22 4

Не по теме:

Цитата Сообщение от Xopecc Посмотреть сообщение
Петррр, а что-то на русском есть ? :) английский не до конца понимаю :-|
учите, очень пригодится, гуглпереводчик в помощь и вперёд - переводить)


попробуйте в QT сделать этот генератор, будет программа с GUI =)
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 09:41  [ТС] 5
dzrkot, хотел в Windows Forms сделать, вот результат
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.02.2014, 09:46 6
Цитата Сообщение от Xopecc Посмотреть сообщение
dzrkot, хотел в Windows Forms сделать, вот результат
не могу помочь, сам пока тыкаюсь только в QT, формы особо не трогал за ненадобностью)
0
Заблокирован
03.02.2014, 10:07 7
Цитата Сообщение от dzrkot Посмотреть сообщение
попробуйте в QT сделать этот генератор, будет программа с GUI =)
Вот-вот. Тем более сложности нет: батон, текстедит, и что нибудь для количества + диапазона.

Цитата Сообщение от Xopecc Посмотреть сообщение
хотел в Windows Forms сделать, вот результат
код выкладывайте.
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.02.2014, 10:10 8
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
и что нибудь для количества
QSpinBox можно)
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 12:45  [ТС] 9
Ev_Hyper, в WindowsForm я только создаю программу(пустое окно) и она уже не работает, по ссылке есть видео-результат...

Добавлено через 2 часа 17 минут
dzrkot, С WindowsForm проблему решил:

Не по теме:

Помогло удаление из проекта файла app.rc


Сейчас попробую наваять генератор с GUI
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
03.02.2014, 13:47 10
Еще такой генератор в стиле С++11:
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
#include <iostream>
#include <random>
#include <chrono>
#include <ctime>
 
int main()
{
   //std::default_random_engine gen(std::chrono::system_clock::now().time_since_epoch().count());
   //std::mt19937 gen {std::chrono::system_clock::now().time_since_epoch().count() }; // gen.seed(time(0));
   std::mt19937 gen { static_cast<unsigned>(std::time(nullptr)) };
   std::vector<std::uniform_int_distribution<> >  ascii =
   {
      std::uniform_int_distribution<>('a', 'z'), //0
      std::uniform_int_distribution<>('A', 'Z'), //1
      std::uniform_int_distribution<>('0', '9'), //2
      std::uniform_int_distribution<>(':', '@'), //3
      std::uniform_int_distribution<>('[', '`'), //4
      std::uniform_int_distribution<>('{', '~'), //5
      std::uniform_int_distribution<>(0, 5)      //6
   };
 
   for(std::size_t i = 0; i < 60; ++i)
      std::cout << static_cast<char>(ascii[ascii[6](gen)](gen));
 
   std::cout << std::endl;
   return 0;
}
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 14:17  [ТС] 11
DiffEreD, можно, но он менее простой, нежели мой Да и новички в твоем(может и не твоем) коде не разберутся !
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
03.02.2014, 14:58 12
Цитата Сообщение от Xopecc Посмотреть сообщение

Оцените компактность и непредсказуемость(рандомность) пароля

C++
1
srand(time(NULL));
Вы уж меня простите за занудство (работа такая - быть занудным), но здесь
отсутствует одно из главных качеств пароля - непредсказуемость.

time возвращает к-во секунд, прошедших с определенной даты (1970).
Если злоумышленнику известен алгоритм генерации пароля, и он знает хотя бы
примерное время, когда этот пароль был сгенерирован, тогда у него есть все
шансы узнать его простым перебором. Например, если он знает, что пароль был
сгенерирован между 12:00 и 13:00 3 февраля 2014 года, то достаточно перебрать
3600 секунд * 30 символов = 108000 комбинаций, подаваемых в srand, чтобы
получить исходное состояние генератора случайных чисел, используемого в rand.
На современных компьютерах это займет не больше секунды.

Нужно "подмешать" в srand хоть какой-то энтропии, например ID потока, состояние
регистров CPU, позицию указателя мыши и т.д. Тогда вероятность найти пароль
простым перебором значительно снижается.
2
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 15:45  [ТС] 13
Убежденный, воу, я об этом и не задумывался Пойду почитаю, может к вечеру накину чего нового, выложу на ваше оценивание !

Добавлено через 33 минуты
Убежденный, я что-то srand вообще не понимаю, она у меня не принимает никакого значения кроме NULL(0)... Объясните, из-за чего это

Добавлено через 9 минут
Убежденный,
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
#include<conio.h>
#include<iostream>
#include<time.h>
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    unsigned int x = rand() % 10000;
    srand(x);
    unsigned int y = rand() % x;
    srand(y);
    unsigned int z = rand() % y;
    srand(z);
    unsigned int w = rand() % (x*y*z);
    srand(w);
    const int N = 30;
    int c;
    char Password[N];
    int q;
    cout<<"\t\tГенератор пароля(до 30 символов)\n\n";
    cout<<"Введите кол-во символов для генерации: ";
    cin>>c;
    for(int i(0); i < c; i++){
        q = (rand()%3);
        if(q == 0)
        Password[i] = (char) (rand() % 26) + 65;
        else if(q == 1)
        Password[i] = (char) (rand() % 26) + 97;
        else
        Password[i] = (char) (rand() % 10) + 48;
    }
    for(int i(c); i < N; i++)
        Password[i] = '\0';
    cout<<"\n\nВаш новый пароль: ";
    for(int i(0); i < c; i++)cout<<Password[i];
    cout<<"\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
Поколдовал с функцией srand, еще реально быстро подобрать пароль?

Не по теме:

я что-то srand вообще не понимаю, она у меня не принимает никакого значения кроме NULL(0)... Объясните, из-за чего это
ахаха, забыл удалить srand(time(NULL)), всегда подставлял значение в значение времени :D

0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
03.02.2014, 15:59 14
Цитата Сообщение от Xopecc Посмотреть сообщение
Поколдовал с функцией srand, еще реально быстро подобрать пароль?
Реально.
У Вас srand всегда выполняется с time(NULL), а все последующие srand-ы
зависят от самой первой. На успех атаки полным перебором это никак не влияет.

Надо что-то типа такого:
C++
1
2
3
4
5
6
srand(
    текущее_время ^
    позиция_указателя_мыши ^
    состояние_регистров_CPU ^
    прочая_чушь_которую_трудно_предсказать
);
0
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 17:03  [ТС] 15
Убежденный, у функции srand может быть больше 1-ого аргумента? не знал, щас еще что-нибудь попробую
0
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
04.02.2014, 03:13 16
Цитата Сообщение от Xopecc Посмотреть сообщение
Убежденный, у функции srand может быть больше 1-ого аргумента? не знал, щас еще что-нибудь попробую
это побитовый xor
0
04.02.2014, 03:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2014, 03:13
Помогаю со студенческими работами здесь

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

Генератор пароля
Приветствую. Решил тут написать функцию сабжа, но что то хлам какой то неработоспособный...

Генератор пароля (сложно)
Думаю, что задача очень и очень сложная, но может кто-то всё же знает, как сделать это... В...

Генератор пароля пользователей
Реализовать программу – генератор паролей пользователей. Программа должна формировать случайную...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru