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

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

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

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

31.01.2014, 02:03. Просмотров 992. Ответов 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 код
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 02:03     Генератор пароля
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
31.01.2014, 03:03     Генератор пароля #2
Вообще-то это тебя надо спросить зачем ты тут написал printf?!
Kill100
 Аватар для Kill100
360 / 249 / 33
Регистрация: 11.12.2010
Сообщений: 1,072
Завершенные тесты: 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)
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();
}
Yandex
Объявления
31.01.2014, 04:28     Генератор пароля
Ответ Создать тему
Опции темы

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