- •Литература
- •Введение
- •1. Цель и содержание работы
- •2. Методика выполнения работы
- •2.1. Шифры одноразового блокнота и замены Краткие теоретические сведения
- •Задание 1. Шифрование и расшифрование одноразовым блокнотом
- •Технология работы
- •Краткие теоретические сведения
- •Технология работы
- •Задание 3. Шифрование и расшифрование шифром Вижинера
- •Технология работы
- •Задание 2. Шифрование и расшифрование шифром Цезаря
- •2.2. Шифры перестановки Краткие теоретические сведения
- •Задание 4. Шифрование и расшифрование шифром простой перестановки
- •Технология работы
- •2.3. Шифрование с помощью аналитических преобразований Краткие теоретические сведения
- •Задание 5. Шифрование и расшифрование с помощью аналитических преобразований
- •Технология работы
- •2.4. Криптосистемы с открытым ключом Краткие теоретические сведения
- •Задание 6. Шифрование и расшифрование с помощью алгоритма rsa
- •Технология работы
- •Задание 7. Шифрование и расшифрование с помощью системы ElGamal
- •Технология работы
- •2.5. Генератор надежных паролей
- •Задание 8. Разработка генератора надежных паролей
- •Технология работы
- •1. Разработка формы:
- •2. Разработка программного кода:
- •3. Компиляция и запуск программы:
- •Краткие сведения из теории чисел
2. Разработка программного кода:
Перейдите в окно программного кода и объявите все переменные, которые будут использоваться:
var
Form1: TForm1;
s: array[1..100] of string; //Каждый элемент этого массива
//содержит 1 символ пароля
a,i,x: integer;
Полужирным цветом выделяется то, что вы должны ввести в программу!!!
Создайте обработчик события OnClick кнопки Создать. Для этого в форме выполните двойной щелчок мышью на кнопке Создать. В окне кода появится заготовка процедуры обработки события OnClick, в которой объявите метку ran и введите следующий код:
procedure TForm1.Button1Click(Sender: TObject);
label ran;
begin
Randomize;
pass.Text:='';
for i:=1 to colvo.Value do
begin
ran:
a:=random(3);
case a of
0: if num.Checked then s[i]:=IntToStr(random(10))
else goto ran;
1: if big.Checked or small.Checked
then
begin
x:=random(26)+65;
s[i]:=chr(x);
if small.Checked and (big.Checked=false)
then s[i]:=AnsiLowerCase(s[i]);
if small.Checked and big.Checked
then
begin
a:=random(2);
if a=1 then s[i]:=AnsiLowerCase(s[i]);
end;
end
else goto ran;
2:if special.Checked then
begin
a:=random(length(chars.Text))+1;
s[i]:=chars.Text[a];
end
else goto ran;
end;
pass.Text:=pass.Text+s[i];
end;
end;
Здесь каждый символ пароля получаем при помощи функции генерации случайных чисел random, и поэтому каждый следующий пароль абсолютно не похож на предыдущий. После того, как символ сгенерирован, проверяем, разрешен ли он для использования в пароле. Если его использование разрешено, то добавляем этот символ в пароль, в противном случае – генерируем новый символ.
Для работы с буфером обмена добавьте в раздел uses ссылку на модуль Clipbrd:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Spin, StdCtrls, Clipbrd;
Создайте обработчик события OnClick кнопки Копировать. Для этого в форме выполните двойной щелчок мышью на кнопке Копировать. В окне кода появится заготовка процедуры обработки события OnClick, в которой введите следующий код:
procedure TForm1.Button2Click(Sender: TObject);
begin
ClipBoard.Open;
ClipBoard.AsText:=pass.Text;
ClipBoard.Close
end;
Создайте обработчик события OnClick кнопки Очистить. Для этого в форме выполните двойной щелчок мышью на кнопке Очистить. В окне кода появится заготовка процедуры обработки события OnClick, в которой введите следующий код:
procedure TForm1.Button3Click(Sender: TObject);
begin
pass.Clear;
ClipBoard.Open;
ClipBoard.Clear;
ClipBoard.Close;
end;
