Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 09:09     Генератор пароля. Оцените его компактность и непредсказуемость #1
Сделал за 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;
}

Не по теме:

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

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 09:09     Генератор пароля. Оцените его компактность и непредсказуемость
Посмотрите здесь:

C++ Необычный генератор.
C++ Генератор пароля
C++ Генератор пароля
C++ Генератор чисел
C++ Генератор, гистограмма
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
03.02.2014, 09:16     Генератор пароля. Оцените его компактность и непредсказуемость #2
Цитата Сообщение от Xopecc Посмотреть сообщение
И подскажите как копировать в буфер обмена
http://stackoverflow.com/questions/1...clipboard-in-c
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 09:18  [ТС]     Генератор пароля. Оцените его компактность и непредсказуемость #3
Петррр, а что-то на русском есть ? английский не до конца понимаю
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
03.02.2014, 09:22     Генератор пароля. Оцените его компактность и непредсказуемость #4

Не по теме:

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


попробуйте в QT сделать этот генератор, будет программа с GUI =)
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 09:41  [ТС]     Генератор пароля. Оцените его компактность и непредсказуемость #5
dzrkot, хотел в Windows Forms сделать, вот результат
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
03.02.2014, 09:46     Генератор пароля. Оцените его компактность и непредсказуемость #6
Цитата Сообщение от Xopecc Посмотреть сообщение
dzrkot, хотел в Windows Forms сделать, вот результат
не могу помочь, сам пока тыкаюсь только в QT, формы особо не трогал за ненадобностью)
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,788
03.02.2014, 10:07     Генератор пароля. Оцените его компактность и непредсказуемость #7
Цитата Сообщение от dzrkot Посмотреть сообщение
попробуйте в QT сделать этот генератор, будет программа с GUI =)
Вот-вот. Тем более сложности нет: батон, текстедит, и что нибудь для количества + диапазона.

Цитата Сообщение от Xopecc Посмотреть сообщение
хотел в Windows Forms сделать, вот результат
код выкладывайте.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
03.02.2014, 10:10     Генератор пароля. Оцените его компактность и непредсказуемость #8
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
и что нибудь для количества
QSpinBox можно)
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 12:45  [ТС]     Генератор пароля. Оцените его компактность и непредсказуемость #9
Ev_Hyper, в WindowsForm я только создаю программу(пустое окно) и она уже не работает, по ссылке есть видео-результат...

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

Не по теме:

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


Сейчас попробую наваять генератор с GUI
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 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;
}
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 14:17  [ТС]     Генератор пароля. Оцените его компактность и непредсказуемость #11
DiffEreD, можно, но он менее простой, нежели мой Да и новички в твоем(может и не твоем) коде не разберутся !
Убежденный
Системный программист
 Аватар для Убежденный
14199 / 6214 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 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, позицию указателя мыши и т.д. Тогда вероятность найти пароль
простым перебором значительно снижается.
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
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)), всегда подставлял значение в значение времени

Убежденный
Системный программист
 Аватар для Убежденный
14199 / 6214 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
03.02.2014, 15:59     Генератор пароля. Оцените его компактность и непредсказуемость #14
Цитата Сообщение от Xopecc Посмотреть сообщение
Поколдовал с функцией srand, еще реально быстро подобрать пароль?
Реально.
У Вас srand всегда выполняется с time(NULL), а все последующие srand-ы
зависят от самой первой. На успех атаки полным перебором это никак не влияет.

Надо что-то типа такого:
C++
1
2
3
4
5
6
srand(
    текущее_время ^
    позиция_указателя_мыши ^
    состояние_регистров_CPU ^
    прочая_чушь_которую_трудно_предсказать
);
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 17:03  [ТС]     Генератор пароля. Оцените его компактность и непредсказуемость #15
Убежденный, у функции srand может быть больше 1-ого аргумента? не знал, щас еще что-нибудь попробую
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 03:13     Генератор пароля. Оцените его компактность и непредсказуемость
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
04.02.2014, 03:13     Генератор пароля. Оцените его компактность и непредсказуемость #16
Цитата Сообщение от Xopecc Посмотреть сообщение
Убежденный, у функции srand может быть больше 1-ого аргумента? не знал, щас еще что-нибудь попробую
это побитовый xor
Yandex
Объявления
04.02.2014, 03:13     Генератор пароля. Оцените его компактность и непредсказуемость
Ответ Создать тему
Опции темы

Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru