Своеобразен парола генератор (произволни символи) на Делфи

Тази функция, увито в лесен за употреба интерфейс, Аз съм с вас и ще споделя. Можете да използвате и получените резултати от програмата за генериране на пароли, например, социални услуги. мрежи или форуми, като по този начин се освободят от постоянното пъзела изобретяването сложни пароли или други цели. функция алгоритъм е много проста и лесна за разбиране, тя може лесно да бъде пренаписана на друг език, който притежавате, като PHP или JS, с което се добавя функционалност към вашия сайт. Така че, нека да започнем!

Ние отваряме вечно жив, Delphi среда. За да напишете един пример, аз ще използвам Delphi 7, можете да използвате и по-нова версия, по примера работи във всякаква среда. Създаване на нов проект, с форма и поставете следните компоненти във формуляр: 4-ти CheckBox'a един бутон Бутон Edit Има един, един етикет и един SpinEdit (входни номера).


Имената на напускането на компонентите по подразбиране, но можете да ги има, за да се обадя, но за в бъдеще не се объркват. Но промените Надпис имота, за потребителите да разберат всички pereklyuchaeteley:
- CheckBox1 - «малки букви";
- CheckBox2 - «главни букви";
- CheckBox3 - «Числа";
- CheckBox4 - «Специален. символа ";
- Button1 - «генератор»;
- Label1 - «дължина на низа".

Edit1 - текст ще направи празен имот, а компонент SpinEdit1 стойността на имота се поставя в размер на 20 (броя на знаците в генериран низ по подразбиране). Също така, ограничи минималната стойност = 2 варира MINVALUE и MAXVALUE = 100 т.е. Нашата линия трябва да бъде най-малко 2 символа и не повече от 100.


Отметката е - логическите превключватели ще сигнализират нашия RandString функция. Какви знаци, за да се включат в генериран низ.
SpinEdit1 - както може би се досещате, е дължината на генерирания низ.
Ами Edit1 приемам резултата.

Поставете всички компоненти във форма, приблизително, както е показано по-долу, или по своя преценка.

Своеобразен парола генератор (произволни символи) на Делфи

Е, всички подготвителни стъпки са завършени, преминете към най-забавната част, за писане на код.

В модула, под ключ изпълнението на думата пишем следната функция код:

функция Randstring (Len: дума; LCase, UpCase, цифра, SpecSymb: булев): низ;
конст symLCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ; // набор от малки букви
symUCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ; // набор от главни букви
"0123456789" symNum =; // набор от числа
symSpecSymb = '[] <>. "; - + # '; // набор от специални знаци.

// създаване на общ набор от symb в съответствие с параметрите, отбелязани LCase функция, UpCase, цифра, SpecSymb
ако LCase след symb: = symb + symLCase; // включва набор от малки букви
ако UpCase след symb: = symb + symUCase; // включват набор от главни букви
ако Digit след symb: = symb + symNum; // включва набор от числа
ако след SpecSymb symb: = symb + symSpecSymb; // включва специален комплект. символи

ако symb = '' след symb: = symLCase; // проверява дали множеството остава празен, по подразбиране включват малки букви

име: = '';
защото: = 1 до Len направи
// генерира произволни символи от symb
// повторения цикъл, посочени в пъти Len параметри
// връща произволно число между 0 и symb набор размер
име: = име + symb [случаен (дължина (symb)) + 1];

По принцип, това е! Остава само да му кауза и резултатът се предава на потребителя. За да направите това, кликнете върху генератора бутона два пъти, за да създадете събитие Click и добавете следния код:

Edit1.Text: = RandString (SpinEdit1.Value, CheckBox1.Checked, CheckBox2.Checked, CheckBox3.Checked, CheckBox4.Checked);

За тези, които имат проблеми, аз донесе пълния код на модула:

употреби
Windows, съобщения, SysUtils, варианти, Курсове, графики, Контроли, формуляри,
Диалози, StdCtrls, Spin;

функция Randstring (Len: дума; LCase, UpCase, цифра, SpecSymb: булев): низ;
конст symLCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ; // набор от малки букви
symUCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ; // набор от главни букви
"0123456789" symNum =; // набор от числа
symSpecSymb = '[] <>. "; - + # '; // набор от специални знаци.

// създаване на общ набор от symb в съответствие с параметрите, отбелязани LCase функция, UpCase, цифра, SpecSymb
ако LCase след symb: = symb + symLCase; // включва набор от малки букви
ако UpCase след symb: = symb + symUCase; // включват набор от главни букви
ако Digit след symb: = symb + symNum; // включва набор от числа
ако след SpecSymb symb: = symb + symSpecSymb; // включва специален комплект. символи

ако symb = '' след symb: = symLCase; // проверява дали множеството остава празен, по подразбиране включват малки букви

име: = '';
защото: = 1 до Len направи
// генерира произволни символи от symb
// повторения цикъл, посочени в пъти Len параметри
// връща произволно число между 0 и symb набор размер
име: = име + symb [случаен (дължина (symb)) + 1];

процедура TForm1.Button1Click (Sender: TObject);
започвам
// зададете параметрите Randstring функция и извежда резултата Edit1
Edit1.Text: = Randstring (SpinEdit1.Value, // дължината на линията генерира
CheckBox1.Checked, // ако е отметнато, след това да се превърне в един набор от малката знаци
CheckBox2.Checked, // ако е отметнато, след това да се превърне в един набор от главни букви
CheckBox3.Checked, // ако е отметнато, след това да се превърне в един набор от числа
CheckBox4.Checked); // и да е отметнато, след което се обърнем към специален сет. символи
приключи;


Това е всичко! Събиране и опитайте.

Ние веднъж не генератор парола, която след това е трябвало да се въведе хора. Скоро стана ясно, че паролата не може да използва числото 0 и главна буква О, и с малки букви на латиница L (лакът) и I (и) титлата, тъй като в много шрифтове са твърде много, така и на екрана и шрифт (като, например, тук). Хората са объркани, ядосан и започна да се обадите за техническа поддръжка. И все пак с малки букви L (лакът) с шрифт Serif (като например Times New Roman) е неразличима от единство. Така че от списък на наличните символи и трябваше да я изхвърлите. Общо останалите 25 главни и малки букви и 8 цифри