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

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

21.05.2014, 19:13. Показов 5390. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru