Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Шифр Виженера – модифицированный шифр Цезаря, шифр XOR





Лабораторная работа №1

Создание личных алфавитов

Пример 1. Создать собственный алфавит, как массив символов, непосредственным описанием последовательности символов.

procedure TForm1.Button1Click(Sender: TObject);

Const

A: array [0..15] of char = ('0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); // Описываем алфавит

Var

i: integer; // объявляем переменную к-ва символов

Begin

{Вывод алфавита}

Form1.Caption:= ''; // очищаем переменную

for i:= 0 to 15 do // в цикле от 0 до 15

Form1.Caption:= Form1.Caption + A[i] + ' '; // соединяем символы через пробел

end;

Пример 2. Создать алфавит, как массив символов, используя функцию Succ, указав в качестве начального параметра первый символ алфавита.

Пример 3. Создать обратный алфавит, как массив символов, используя функцию Pred, указав в качестве начального параметра последний символ алфавита.

Задание. Создать свой алфавит из 15 символов:

· добавить кнопку;

· написать обработчик события.

Лабораторная работа № 2

Шифр Виженера – модифицированный шифр Цезаря, шифр XOR

 

Установить в форму элементы управления (страница Standard): Edit1 для ввода пароля, Мемо1, Мемо2, Мемо3; Label1, Label2, Label3 (надписи); GroupBox1, GroupBox2, GroupBox3, в которые установить по 2 кнопки Button (рис. 1). Дать заголовки объектам.

 

Рис. 1 Расположение компонентов в форме

 

В качестве алфавита будем использовать встроенную таблицу ASCII (Z256)

 

Шифр Виженера (модифицированный шифр Цезаря)

Вариант 1

Декларирование функции

{ Private declarations } function VCR(PSW,TXT:string; CRT: boolean):string; //Виженер

Описание функции

Шифрование

Расшифрование

Задание. Проверить работу функции: зашифровать и расшифровать произвольный текст, изменяя пароль.

 

Модифицированный шифр Цезаря (шифр Виженера)

Вариант 2

Декларирование функции

{ Private declarations } function VCR(PSW,TXT:string; CRT: boolean):string; //Виженер function CZR(PSW,TXT:string; CRT: boolean):string; //Цезарь

Описание функции

Шифрование

procedure TForm1.Button3Click(Sender: TObject); begin Memo2.Text:= CZR(Edit1.Text,Memo1.Text, true); end;

Расшифрование

procedure TForm1.Button4Click(Sender: TObject); begin Memo3.Text:= CZR(Edit1.Text,Memo2.Text,false); end;

Задание. Проверить работу функции: зашифровать и расшифровать произвольный текст, изменяя пароль.

Убедитесь, что шифры Виженера и модифицированный шифр Цезаря дают один и тот же результат, т.е. реализуют одинаковый алгоритм с различной программной реализацией.

Шифрование методом XOR

Декларирование функции

{ Private declarations } function VCR(PSW,TXT:string; CRT: boolean):string; //Виженер function CZR(PSW,TXT:string; CRT: boolean):string; //Цезарь functionTXT_XOR(PSW,TXT:string):string; // Метод XOR

Описание функции

 

Шифрование

procedure TForm1.Button5Click(Sender: TObject); begin Memo2.Text:= TXT_XOR(Edit1.Text,Memo1.Text); end;

Расшифрование

procedure TForm1.Button6Click(Sender: TObject); begin Memo3.Text:= TXT_XOR(Edit1.Text,Memo2.Text); end;

Задание. Проверить работу функции, изменяя пароль.

Лабораторная работа №3

Модель шифровальной машины ”ЭНИГМА”

Особенностью алгоритма ЭНИГМА является сдвиг текущего символа в строке текста на значение некоторой функции, зависимой от номера позиции символа в строке. В нашей работе будем применять функцию сдвига f(kx,i) = (kx * i)^2, где

i – порядковый номер символа в строке,

kx – множитель (нечетное число = 0, 1, 3, 5, 7,..., n).

 

В качестве алгоритма шифрования может выступать алгоритм Цезаря с переменным шагом замены.

Шифрование по таблице ASCII , (1)

Расшифрование по таблице ASCII . (2)

При kx = 0 шифрование и расшифрование происходить не будут, так как Ci = Ti + 0 (mod 256) и
Ti = Ci – 0 (mod 256).

Для выполнения работы будем использовать компоненты:

  • SpinEdit (множитель), страница Samples;
  • три компонента Memo (открытый текст, криптограмма, расшифрованный текст);
  • две кнопки Button (1 - шифровать, 2 - расшифровать).

 

 

Рис. 1 Расположение компонентов в форме

 

Ниже приводится универсальная функция шифрования и расшифрования текста по описанному алгоритму. Входными параметрами функции являются:

  • Tx – текст или криптограмма;
  • kx – множитель сдвига;
  • Encrupt – вид операции (true – шифрование, false – расшифрование).

Результатом работы функции является текст либо криптограмма.

 

Декларирование функции

{ Private declarations } function EnDeCrupt(Tx:String; Kx:Integer; Encrupt: boolean):String;

 

Задание 1. Выполнить шифрование и расшифрование текста при различных значениях множителя.

Задание 2. Изменить функцию сдвига, например на и посмотрите на результат.

Шифрование

X:= X + Chr((Ord(Tx[i]) + TRUNC(i/(2*pi) * kx)) mod 256)

Расшифрование

X:= X + Chr((Ord(Tx[i]) - TRUNC(i/(2*pi) * kx)) mod 256);

 

Примечание: множитель kx может принимать любые значения.


Лабораторная работа №4

Простые числа

Натуральное число p, большее единицы, называется простым, если оно имеет только 2 положительных делителя 1 и само число p. Например числа 3, 5, 7.

Натуральное число называется составным, если оно имеет более 2-х положительных делителей. Например числа 6, 8, 9. 1 — ни простое, ни составное число.

Теорема арифметики. Любое натуральное число n, большее единицы, может быть разложено в произведение простых чисел (множителей), причем это разложение единственное.

Разложение натурального числа n имеет вид:

, где p 1, p 2, ... pk — различные простые числа,
(множество натуральных чисел).

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

Решается задача: о пределить, является ли натуральное число n простым.

 

Метод пробных делений

Пусть число n N. Если n – составное число, то n = ab, где 1 < a b, причем (если b=a, то n=a2).

Будем искать делители числа n. Для этого достаточно проверить, делится ли число n
на 2, 3, 4, ..., .

Если делитель найден, то число n — составное (не является простым). Если, делитель не будет найден, то n – простое число.

 

Пример. Сгенерироватьтаблицупростых чисел в выбранном диапазоне значений.

 

В примере использованы:

  • два компонента SpinEdit — для выбора значений из диапазона чисел;
  • компонент Memo — для отображения результатов;
  • компоненты Label — для заголовков;
  • командная кнопка Button — для запуска обработчика событий.

 

Рис. 2 Расположение элементов в форме

Решето Эратосфена

Алгоритм построения таблицы простых чисел в диапазоне от 2 до N.

Из исходной таблицы чисел

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 …………

 

нужно вначале вычеркнуть все числа, делящиеся на 2, кроме 2.

Затем взять число 3 и вычеркнуть все последующие числа, делящиеся на 3.

Затем взять следующее, не вычеркнутое число (т. е. 5) и вычеркнуть все последующие делящиеся на него числа, и так далее.

В итоге останутся лишь простые числа.

 

Задание.. Построитьтаблицупростых чисел в диапазоне от 2 до 70 пользуясь алгоритмом «Решето Эратосфена».


Лабораторная работа №5

ЛАБОРАТОРНАЯ РАБОТА №6

 

Лабораторная работа № 7

Декларирование функции

private { Private declarations } Function GCD(A, B:integer): Integer;

Описание функции

{Для функции безразлично (А,В) или (В,А)} Function TForm1.GCD(A, B:integer): Integer; begin If B Mod A = 0 Then // Делится ли B на A нацело? Result:= A // Да. Функция выполнена. else Result:= GCD(B mod A, A); //Нет. Рекурсия (вызов самой себя). end;

Вызов функции

procedureTForm1.Button1Click(Sender: TObject); var A, B, X: integer; begin A:= 12; B:= 9; //числа А и B X:= GCD(A,B); // результат работы функции {вывод информации} if X = 1 then Form1.Caption:= 'Числа вз. простые!' elseForm1.Caption:= 'НОД = ' + IntToStr(X); end;

Задание. Внести изменения в программу, что бы числа вводились из компонента SpinEdit.

Лабораторная работа №8

Лабораторная работа №1

Создание личных алфавитов

Пример 1. Создать собственный алфавит, как массив символов, непосредственным описанием последовательности символов.

procedure TForm1.Button1Click(Sender: TObject);

Const

A: array [0..15] of char = ('0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); // Описываем алфавит

Var

i: integer; // объявляем переменную к-ва символов

Begin

{Вывод алфавита}

Form1.Caption:= ''; // очищаем переменную

for i:= 0 to 15 do // в цикле от 0 до 15

Form1.Caption:= Form1.Caption + A[i] + ' '; // соединяем символы через пробел

end;

Пример 2. Создать алфавит, как массив символов, используя функцию Succ, указав в качестве начального параметра первый символ алфавита.

Пример 3. Создать обратный алфавит, как массив символов, используя функцию Pred, указав в качестве начального параметра последний символ алфавита.

Задание. Создать свой алфавит из 15 символов:

· добавить кнопку;

· написать обработчик события.

Лабораторная работа № 2

Шифр Виженера – модифицированный шифр Цезаря, шифр XOR

 

Установить в форму элементы управления (страница Standard): Edit1 для ввода пароля, Мемо1, Мемо2, Мемо3; Label1, Label2, Label3 (надписи); GroupBox1, GroupBox2, GroupBox3, в которые установить по 2 кнопки Button (рис. 1). Дать заголовки объектам.

 

Рис. 1 Расположение компонентов в форме

 

В качестве алфавита будем использовать встроенную таблицу ASCII (Z256)

 







ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.