Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/26: Рейтинг темы: голосов - 26, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14

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

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

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

Если у кого есть - скиньте плиз исходник, буду благодарен
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2014, 19:13
Ответы с готовыми решениями:

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

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

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

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

И главная проблема - если я один раз поставил галочки, что должно входить в пароль, сгенерировал его, а потом убрал некоторые галочки, то в строке 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);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
22.05.2014, 08:06
Цитата Сообщение от 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  [ТС]
mimicria, спасибо я тупанул )

теперь другая проблема. Если я ставлю длину пароля 12 и из параметров ABC и 123, то выходит вот такие пароли:
Code
1
2
3
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);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
22.05.2014, 10:04
Лучший ответ Сообщение было отмечено mepev как решение

Решение

Цитата Сообщение от mepev Посмотреть сообщение
уже дописывается лишнее
Ну а в массиве последний байт вы сделали \0 ?
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 14
22.05.2014, 10:49  [ТС]
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 Кб, 60 просмотров)
0
1 / 1 / 0
Регистрация: 21.11.2014
Сообщений: 47
08.09.2015, 16:51
Отличный пример!
А если сделать так: вместо TEdit на выдаче сделать MEMO, и замутить новое поле TEdit - кол-во генерируемых паролей?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.09.2015, 09:39
fatalnoob, запросто. Что-то не получается?
0
1 / 1 / 0
Регистрация: 21.11.2014
Сообщений: 47
09.09.2015, 13:00
Ну в целом вопрос, как это замутить...
Потому как сейчас пока так...:
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
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.09.2015, 22:28
В целом, так:
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++
1
char *GenPass = new char [ StrToInt(Len->Text) + 1];
- которую так никто и не удосужился освобождать, что не есть гуд.
1
1 / 1 / 0
Регистрация: 24.04.2018
Сообщений: 10
30.04.2018, 15:20
Я очень благодарен людям которые сделали данный исходник... Вы просто Боги. Я уже опустил руки и думал покупать курсовую работу. Ещё раз спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2018, 15:20
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru