0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14
1

Генератор паролей C++ Builder

21.05.2014, 19:13. Показов 4195. Ответов 13
Метки нет (Все метки)

Здравствуйте. Очень удивился, когда не нашел ни одного исходника генератора паролей на C++ Builder. Наверняка же многие делали хорошие решения. Хочется с выбором параметром (буквы разного регистра, спецсимволы, цифры) и длиной.

Если у кого есть - скиньте плиз исходник, буду благодарен
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2014, 19:13
Ответы с готовыми решениями:

Создать генератор слов в C++ Builder 5
Всем привет!Я хочу создать генератор слов в C++ Builder 5 киньте исходник.Заранее спасибо.

С++ Builder 6. Генератор ключей для программы.
Здравствуйте. Меня интересует вопрос о том, как внутри своей программы создать генератор ключей,...

Генератор с возможность создания более 3 млрд паролей и выводом в файл
Ребята, кто сможет достать код из программы, или написать на с++ Нужен просто такой генератор с...

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

13
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.05.2014, 21:03 2
А самостоятельно не хочешь попробовать? Ничего сложного нет.
Формируешь массив спецсимволов, цифр, букв из того, что разрешено. В каком они будут порядке - безразлично. Потом в случайном порядке выбираешь из него нужное количество знаков - и всех делов.
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14
21.05.2014, 21:24  [ТС] 3
BRcr, сказать честно - не очень) я просто знаю свои умения, знаю что буду доблиться пару дней, будет куча вопросов, а в итоге выйдет грязный неоптимизированный глюченный код. Наверное же кто-то писал красиво
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14
21.05.2014, 23:27  [ТС] 5
Что-то вышло, ясное дело что криво, не ругайте
Если можно сделать лучше - напишите плиз как.

И главная проблема - если я один раз поставил галочки, что должно входить в пароль, сгенерировал его, а потом убрал некоторые галочки, то в строке symbols они же остаются, т.к было сложение строк, как лучше решить это?

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
#include <vcl.h>
#include <string.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
AnsiString symbols("");
int pass_lenght;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
pass_lenght=StrToInt(Len->Text);
if (numbers->Checked) symbols+="0123456789";
if (abc->Checked) symbols+="abcdefghijklmnopqrstuvwxyz";
if (BigABC->Checked) symbols+="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (RUSabv->Checked) symbols+="абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
if (RUSBigABV->Checked) symbols+="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
if (Special->Checked) symbols+="!@#$%^&*()_+=-";
 
char *temp = new char [ pass_lenght + 1 ];
for (int i=0;i<=pass_lenght;i++)
{
temp[i] = symbols[rand() % symbols.Length()+1];
}
 
Pass->Text=temp;
 
}
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
22.05.2014, 08:06 6
Цитата Сообщение от mepev Посмотреть сообщение
т.к было сложение строк,
C++
1
2
3
pass_lenght=StrToInt(Len->Text);
symbols=""; // ;-)
if (numbers->Checked) symbols+="0123456789";
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14
22.05.2014, 09:19  [ТС] 7
mimicria, спасибо я тупанул )

теперь другая проблема. Если я ставлю длину пароля 12 и из параметров ABC и 123, то выходит вот такие пароли:
Код
M2ASPR7GM4E7456789
JOSC9ZRBDQH2456789
5C3JG9VVDQQJ456789
Откуда там в конце дописывается 456789? Я проверил: i проходит от 0 до 11. Сама строка symbols такая 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ а вот на выходе Pass->Text=GenPass; уже дописывается лишнее.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString symbols("");
if (numbers->Checked) symbols+="0123456789";
if (abc->Checked) symbols+="abcdefghijklmnopqrstuvwxyz";
if (BigABC->Checked) symbols+="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (RUSabv->Checked) symbols+="абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
if (RUSBigABV->Checked) symbols+="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
if (Special->Checked) symbols+="!@#$%^&*()_+=-";
 
char *GenPass = new char [ StrToInt(Len->Text) + 1 ];
for (int i=0;i<StrToInt(Len->Text);i++)
{
GenPass[i] = symbols[rand() % symbols.Length()+1];
}
Pass->Text=GenPass;
}
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
22.05.2014, 10:04 8
Лучший ответ Сообщение было отмечено mepev как решение

Решение

Цитата Сообщение от mepev Посмотреть сообщение
уже дописывается лишнее
Ну а в массиве последний байт вы сделали \0 ?
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14
22.05.2014, 10:49  [ТС] 9
mimicria, конечно нет, но теперь всё ок. Выкладываю исходники, просьбам модераторов не удалять, а то именно на C++ Builder нет ни одного готового проекта. А так может поможет кому-нибудь

И код кнопки (кроме этого там ничего и нету).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (numbers->Checked!=0 || abc->Checked!=0 || BigABC->Checked!=0 || RUSabv->Checked!=0 || RUSBigABV->Checked!=0 || Special->Checked!=0)
{
AnsiString symbols("");
if (numbers->Checked) symbols+="0123456789";
if (abc->Checked) symbols+="abcdefghijklmnopqrstuvwxyz";
if (BigABC->Checked) symbols+="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (RUSabv->Checked) symbols+="абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
if (RUSBigABV->Checked) symbols+="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
if (Special->Checked) symbols+="№;:?/|\[{}]<>!@#$%^&*()_+=-";
char *GenPass = new char [ StrToInt(Len->Text) + 1];
for (int i=0;i<StrToInt(Len->Text);i++)
{
GenPass[i] = symbols[rand() % symbols.Length() + 1];
GenPass[StrToInt(Len->Text)]='\0';
}
Pass->Text=GenPass;
 
}
else MessageBox(0, "Необходимо выбрать хотя бы один из параметров!", "GenPass", MB_OK|MB_ICONEXCLAMATION);
}
mimicria большое thanks что нашли время и помогли! )
Вложения
Тип файла: zip GenPass.zip (857.8 Кб, 55 просмотров)
0
1 / 1 / 0
Регистрация: 21.11.2014
Сообщений: 47
08.09.2015, 16:51 10
Отличный пример!
А если сделать так: вместо TEdit на выдаче сделать MEMO, и замутить новое поле TEdit - кол-во генерируемых паролей?
0
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.09.2015, 09:39 11
fatalnoob, запросто. Что-то не получается?
0
1 / 1 / 0
Регистрация: 21.11.2014
Сообщений: 47
09.09.2015, 13:00 12
Ну в целом вопрос, как это замутить...
Потому как сейчас пока так...:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (numbers->Checked!=0 || abc->Checked!=0 || BigABC->Checked!=0 || RUSabv->Checked!=0 || RUSBigABV->Checked!=0 || Special->Checked!=0)
{
AnsiString symbols("");
if (numbers->Checked) symbols+="0123456789";
if (abc->Checked) symbols+="abcdefghijklmnopqrstuvwxyz";
if (BigABC->Checked) symbols+="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (RUSabv->Checked) symbols+="абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
if (RUSBigABV->Checked) symbols+="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
if (Special->Checked) symbols+="№;:?/|\[{}]<>!@#$%^&*()_+=-";
char *GenPass = new char [ StrToInt(Len->Text) + 1];
for (int i=0;i<StrToInt(Len->Text);i++)
{
GenPass[i] = symbols[rand() % symbols.Length() + 1];
GenPass[StrToInt(Len->Text)]='\0';
}
Memo1->Text=GenPass;
}
else MessageBox(0, "Необходимо выбрать хотя бы один из параметров! Пожалуйста, повторите попытку снова", "PassGen сообщает:", MB_OK|MB_ICONEXCLAMATION);
}
В целом то отличие, что только в memo выходит, а не в TEdit
0
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.09.2015, 22:28 13
В целом, так:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
__fastcall TForm1::TForm1( TComponent * Owner )
    :
    TForm( Owner )
{
    Randomize( );
}
// ---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click( TObject * Sender )
{
    int pass_amount( StrToInt( ledit_amount->Text ) ), pass_len( StrToInt( Len->Text ) );
    String symbols, pass;
 
    if ( numbers->Checked )
    {
        symbols += "0123456789";
    }
    if ( abc->Checked )
    {
        symbols += "abcdefghijklmnopqrstuvwxyz";
    }
    if ( BigABC->Checked )
    {
        symbols += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    }
    if ( RUSabv->Checked )
    {
        symbols += "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    }
    if ( RUSBigABV->Checked )
    {
        symbols += "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
    }
    if ( Special->Checked )
    {
        symbols += "№;:?/|\[{}]<>!@#$%^&*()_+=-";
    }
 
    if ( symbols.IsEmpty( ) )
    {
        MessageBox( 0, "Необходимо выбрать хотя бы один из параметров!", "GenPass", MB_OK | MB_ICONEXCLAMATION );
        return;
    }
 
    pass.SetLength( pass_len );
 
    for ( int i( 0 ), i_limit( pass_amount ); i < i_limit; ++i )
    {
        for ( int j( 1 ), j_limit( pass_len + 1 ); j < j_limit; ++j )
        {
            pass[ j ] = symbols[ Random( symbols.Length( ) ) + 1 ];
        }
        memo_out->Lines->Add( pass );
    }
}
Генератор паролей C++ Builder


Также обращаю внимание на память, выделяемую в этой строчке:
C++
1
char *GenPass = new char [ StrToInt(Len->Text) + 1];
- которую так никто и не удосужился освобождать, что не есть гуд.
1
1 / 1 / 0
Регистрация: 24.04.2018
Сообщений: 10
30.04.2018, 15:20 14
Я очень благодарен людям которые сделали данный исходник... Вы просто Боги. Я уже опустил руки и думал покупать курсовую работу. Ещё раз спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2018, 15:20
Помогаю со студенческими работами здесь

Генератор паролей
Вобщем вот код такой простенький. Как сделать чтобы при каждом нажатии на кнопку он выдовал пароли...

Генератор паролей
Добрый день! Прошу помогите с кодом, точнее как написать... Я новичок, начал изучать C#. Генератор...

Генератор паролей
Добрый день! Прошу помогите с кодом, точнее как написать... Я новичок, начал изучать Delphi....

Генератор паролей
Всем привет! Встала необходимость создать генератор паролей со след. настройками: -только буквы...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru