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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ploikin
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 6
#1

Генератор пароля - C++

31.01.2014, 02:03. Просмотров 1147. Ответов 3
Метки нет (Все метки)

Добрый вечер.
Нужно написать программу-генератор паролей. Программа должна выполнять следующие действия:
a) Ввод идентификатора пользователя с клавиатуры. Данный идентификатор представляет собой последовательность символов a1 a2 ... aN, где N - количество символов идентификатора (может быть любым), аi - i -ый символ идентификатора пользователя.
b) Формирование пароля пользователя Ь,Ь2...ЬМ для данного идентификатора, где М - количество символов пароля, соответствующее Вашему варианту, и вывод его на экран. Алгоритм получения символов пароля Ь, указан в перечне требований таблицы 1 для Вашего варианта.
M=10
1. b1, b2 – случайные цифры.
2. b10-Q, …, b10 - случайные буквы из идентификатора пользователя,
где Q = N mod 7.
3. b3,…, b10-Q-1 - случайные большие буквы английского алфавита.
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
#include <iostream>
#include <string>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
 
int main() 
  { 
    string login;
    cout << "Vvedite login:";
    getline (cin, login);
 
    srand(time(NULL));
    printf("%d ",rand()%10);
    printf("%d ",rand()%10);
 
    int Q=strlen(ident)%8;  
 
    for(int i=2;i<Q;i++)
    {
        if(rand()%2)
            password[i]=(char)(65+rand()%16);
        else
            password[i]=(char)(224+rand()%16); // b3,...,b3+Q - случайные малые буквы русского алфавита, где Q=Nmod8
    }
 
    for(int i=Q;i<passLen;i++)
        password[i]=num[rand()%10]; //b4+Q,...,b11 - случайные цифры.
 
    password[passLen]='\0';
 
    cout<<"ident = "<<ident<<"\npass = "<<password<<endl;
    _getch();
    return 0; 
}
Добавлено через 4 минуты
Получается, чтобы выдернуть элементы из идентификатора нужно стринг преобразовать в массив
2 случайные цифры находит без всего, зачем пишется "%d "?
Рандомные буквы латинского алфавита прописные с 65 по 90 код
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 02:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генератор пароля (C++):

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

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

Разработать генератор одноразового пароля - C++
Помогите пожалуйста разработать генератор одноразового пароля на основе псевдослучайного выбора символов из данных, введенных...

Как реализовать генератор пароля? - C++
условия: 1.выбор длина 2.Выбор букв(заглавные или нет \ или оба) 3. Выбирать Число или нет 4.Выбирать символы или нет //...

Генератор пароля. Оцените его компактность и непредсказуемость - C++
Сделал за 10 минут генератор. Оцените компактность и непредсказуемость(рандомность) пароля, пожалуйста :) #include&lt;conio.h&gt; ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
31.01.2014, 03:03 #2
Вообще-то это тебя надо спросить зачем ты тут написал printf?!
0
Kill100
405 / 271 / 37
Регистрация: 11.12.2010
Сообщений: 1,155
Завершенные тесты: 1
31.01.2014, 03:22 #3
Цитата Сообщение от Ploikin Посмотреть сообщение
2 случайные цифры находит без всего, зачем пишется "%d "?
так printf это форматный вывод на экран. то есть написав что то типа
C++
1
printf("В доме было %i окон и %i дверей", 5, 0);
Получим "В доме было 5 окон и 0 дверей"
PS %d и %i одно и то же - вывод целого числа.
Цитата Сообщение от Ploikin Посмотреть сообщение
Получается, чтобы выдернуть элементы из идентификатора нужно стринг преобразовать в массив
C++
1
2
3
4
5
    string s = "dfdggr";
    printf("%c", s[0]);// выведет d
    printf("%c", s[1]);// выведет f
    printf("%c", s[2]);// выведет d
    printf("%c", s[3]);// выведет g
Работает. Зачем преобразовывать? (по крайней мере в компиляторе который юзает visual studio, и в Intel® С++ Compiler)
1
Ploikin
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 6
31.01.2014, 04:28  [ТС] #4
код аналогичного варианта со след. условием:
1. b1,b2 - случайные символы из множества {!,”,#,$,%,&,’,(,),*}.
2. b3,...,b3+Q - случайные малые буквы русского алфавита, где Q=Nmod8
3. b4+Q,...,b11 - случайные цифры.
пароль 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <ctime>
#include <conio.h>
 
using namespace std;
 
void main()
{
    char ident[30];
    cout<<"Ident = ";
    cin>>ident;
    int idLen=strlen(ident);
 
    char num[]="0123456789";
    char sym[]="!\",#$%&'()*";
   
    srand(time(0));
 
    //длина пароля
    int passLen=11+rand()%10; // Требуемое кол-во символов - 11
    char *password=new char[passLen]; // строка-пароль
    password[0]=sym[rand()%11]; // b1,b2 - случайные символы из множества {!,”,#,$,%,&,’,(,),*}.x
    password[1]=sym[rand()%11];
 
    int Q=strlen(ident)%8;  
 
    for(int i=2;i<Q;i++)
    {
        if(rand()%2)
            password[i]=(char)(160+rand()%16);
        else
            password[i]=(char)(224+rand()%16); // b3,...,b3+Q - случайные малые буквы русского алфавита, где Q=Nmod8
    }
 
    for(int i=Q;i<passLen;i++)
        password[i]=num[rand()%10]; //b4+Q,...,b11 - случайные цифры.
 
    password[passLen]='\0';
 
    cout<<"ident = "<<ident<<"\npass = "<<password<<endl;
    _getch();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 04:28
Привет! Вот еще темы с ответами:

Оценка безопасности пароля путем перебора пароля из словаря - C++
Разработать программное обеспечение для оценки степени безопасности паролей пользователей. Я уже скачал пару словарей паролей из...

Генератор на С++ - C++
Всем привет, вот нашел классную прогу, она делает все то что мне нужно за 2мя исключениями 1) Он производит генерацию с 1-го символа,...

Генератор числа от -1 до 1 - C++
Хай! Пытаюсь написать генератор для рандомной выдачи числа от -1 до 1. Что делаю не так скажите? srand(time(0)); tmpValue...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.01.2014, 04:28
Ответ Создать тему
Опции темы

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