Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Результаты работы программы

Постановка задачи

 

№ варианта Вид генератора ПСЧ Количество разрядов b
  Линейные конгруэнтные датчики ПСЧ  

 

Описание используемого метода

 

Теоретические основы метода гаммирования

 

Принцип шифрования гаммированием заключается в генерации гаммы шифра с помощью датчика псевдослучайных чисел и наложении полученной гаммы шифра на открытые данные обратимым образом (например, используя операцию сложения по модулю 2). Процесс дешифрования сводится к повторной генерации гаммы шифра при известном ключе и наложении такой же гаммы на зашифрованные данные.

Полученный зашифрованный текст является достаточно трудным для раскрытия в том случае, если гамма шифра не содержит повторяющихся битовых последовательностей и изменяется случайным образом для каждого шифруемого слова. Если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то шифр можно раскрыть только прямым перебором (подбором ключа). В этом случае криптостойкость определяется размером ключа.

Метод гаммирования становится бессильным, если известен фрагмент исходного текста и соответствующая ему шифрограмма. В этом случае простым вычитанием по модулю 2 получается отрезок псевдослучайной последовательности и по нему восстанавливается вся эта последовательность.

 

Линейные конгруэнтные датчики ПСЧ

 

Чтобы получить линейные последовательности элементов гаммы, длина которых не превышает размер шифруемых данных, используют датчики ПСЧ. Одним из хороших конгруэнтных генераторов является линейный конгруэнтный датчик ПСЧ. Он вырабатывает последовательности псевдослучайных чисел T(i), описываемые соотношением

T(i+1) = (A * T(i) + C) mod M,

где A и C - константы, T(0) - исходная величина, выбранная в качестве порождающего числа. Очевидно, что эти три величины и образуют ключ.

Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений A и C. Значение M обычно устанавливается равным 2b , где b -длина машинного слова в битах. Необходимо выбирать числа A и C так, чтобы период M был максимальным.

Как показано Д.Кнуттом, линейный конгруэнтный датчик имеет максимальную длину M тогда, когда C нечетное и A mod 4 = 1.

В качестве примера использования линейного конгруэнтного датчика ПСЧ рассмотрим процесс шифрования исходного текста “абв”. Пусть b = 5, тогда в соответствии с номером алфавите: буква “а” имеет двоичный код 00001; буква “б” имеет двоичный код 00010; буква “в” имеет двоичный код 00011. Исходный текст будет представлен в виде последовательности 00001 00010 00011.

Для формирования гаммы шифра выберем параметры датчика ПСЧ: A=5; C=3; T(0)=7; M=2b; b=5; M=25=32. Сформируем три псевдослучайных числа:

T(1) = (5*7+3) mod 32 = 6 (00110);

T(2) = (5*6+3) mod 32 = 1 (00001);

T(3) = (5*1+3) mod 32 = 8 (01000).

Полученная гамма шифра 00110 00001 01000. Зашифрованный текст получается путем наложения гаммы шифра на исходный текст (путем сложения по модулю 2):

00001 00010 00011

00110 00001 01000

00111 00011 01011

что соответствует шифрограмме “жвк”, “ж” (седьмая буква в алфавите) имеет код 00111, “в” (третья буква в алфавите) имеет код 00011, “к” (одиннадцатая буква в алфавите) имеет код 01011.

Дешифрование производится путем наложения той же гаммы на зашифрованный текст:

00111 00011 01011

00110 00001 01000

00001 00010 00011 = абв

 

Описание исходных данных

 

Исходными данными для шифрования являются входная строка для шифрования, алгоритм датчика ПСЧ, и таблица кодов символов(в данной программе используются ISCII коды).

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

 

 

Алгоритм работы программы

Оператор записывает строку, которую требуется зашифровать. Программа при помощи генератора ПСЧ создает гамма шифр и зашифрованную строку. Генератор ПСЧ получает случайное число, запоминает его в гамма-шифре и складывает его(XOR) c кодом символа. Таким образом мы получаем код зашифрованного символа.

Функция дешифровки получает в качестве параметров гамма-шифр и зашифрованную строку. Она складывает(XOR) коды символов строки с гамма-шифром и таким образом мы получаем исходную строку.

 

Текст программы

 

 

unit LAb2ZI;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

Const

M=64;

A=5;

C=3;

T0=7;

var

Form1: TForm1;

i:byte;

T:array of integer;

implementation

 

{$R *.dfm}

Function Shifr(str:string):string;

var i,a:byte;

str2:string;

S:array of byte;

begin

str2:='';

a:=length(str);

if a<>0 then

begin

setlength(T,a);

setlength(s,a);

end;

For i:=1 to a do

begin

if i = 1 then

T[i-1]:=(A*T0+C) mod M

else

T[i-1]:=(A*T[i-2]+C) mod M;

S[i-1]:=ord(str[i]) xor T[I-1];

str2:=str2+chr(S[i-1]);

end;

shifr:=str2;

end;

procedure TForm1.Button1Click(Sender: TObject);

var str:string;

begin

str:=Edit1.text;

Edit2.Text:=Shifr(str);

end;

 

Function Unshifr(str:string;t:array of integer): string;

var

S:array of byte;

i:byte;

a:integer;

str2:string;

begin

a:=sizeof(t) div 4;

setlength(s,a);

for i:= 1 to a do

begin

S[i-1]:=ord(str[i]) xor T[I-1];

str2:=str2+chr(S[i-1]);

end;

unshifr:=str2;

end;

 

 

procedure TForm1.Button2Click(Sender: TObject);

begin

if (sizeof(T) > 0) and (edit2.text<>'') then

begin

edit3.Text:=unshifr(edit2.Text,T);

setlength(T,0);

end

else ShowMessage('Error');

end;

 

end.

 

Результаты работы программы

 

Пример1:

 

Пример 2:

Константа С = 7

 

На всех входных наборах программа сработала корректно.

 

Выводы:

В ходе выполнения лабораторной работы была написана программа, шифрующая и дешифрующая строку методом гаммирования с помощью линейного конгруэнтного датчика ПСЧ. Были освоены принципы шифрования гаммированием, изучены свойства генератора псевдослучайных чисел.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...