Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 00:33   #1
Eclipse09
Новичок
Джуниор
 
Регистрация: 05.11.2009
Сообщений: 2
По умолчанию Генератор паролей

Привет юзерам форума.
Требуется следующее:
Написать программу - генератор паролей.
Программа должна выполнять следующие действия:
a] Ввод идентификатора пользователя с клавиатуры. Данный идентификатор представляет собой последовательность символов a1,a2,...,an , где N – количество символов идентификатора (может быть любым), ai - i – ый символ идентификатора пользователя.
b] Формирование пароля пользователя b1,b2,...,bM для данного идентификатора, где M – количество символов пароля bi и вывод его на экран. Алгоритм получения символов пароля указан ниже. Требуемое кол-во символов - 11
Само условие:
1. b1,b2 - случайные символы из множества {!,”,#,$,%,&,’,(,),*}.
2. b3,...,b3+Q - случайные малые буквы русского алфавита, где Q=Nmod8
3. b4+Q,...,b11 - случайные цифры.


Всё, на что у меня хватило мозгов:
Код:
#include <iostream>
#include <time.h>
using namespace std;

void main() {
	char* strID = "Eclipse1234";
	int nLenOfID = strlen(strID);
	srand(time(NULL));
	for(int i = 0; i < nLenOfID; i++) {
		cout << strID[rand() % nLenOfID];
	}
	cout << endl;
	system("pause");
}
Я думаю разумней реализовать это с ANSI. Типа
Код:
for (int i=97;i<122;i++) {
      cout << char(i);
}
Коды английских символов - «A»=65,…,«Z»=90, «a»=97,…, «z» =122.
Коды цифр – «0» = 48, «9» = 57.
Коды спец. символов ! – 33, “ – 34, # - 35, $ - 36, % - 37, & - 38, ‘ – 39, ( - 40, ) – 41, * - 42.
Коды русских символов – «А» - 128, … «Я» - 159, «а» - 160,…, «п» - 175, «р» - 224,…, «я» - 239.
Только не хватает логики.. Поможете с решением?
Eclipse09 вне форума Ответить с цитированием
Старый 05.11.2009, 19:34   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

такое получилось

Код:
#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();
}
counter вне форума Ответить с цитированием
Старый 09.11.2009, 13:59   #3
Eclipse09
Новичок
Джуниор
 
Регистрация: 05.11.2009
Сообщений: 2
По умолчанию

Спасибо. Немного переделал, но это очень помогло
Eclipse09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор паролей artyomz JavaScript, Ajax 0 15.10.2009 19:01
Генератор паролей valerij Microsoft Office Excel 2 29.07.2009 14:08
Генератор паролей -=L.Morgan=- Помощь студентам 1 29.06.2009 03:04
Генератор паролей pali4ev Общие вопросы Delphi 6 24.12.2008 18:54