35027

Алгоритм шифрования XOR

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

Информатика, кибернетика и программирование

XOR – это функция булевой алгебры, носящей название «исключающее или», данная функция используется для работы с данными представленными в двоичной системе исчисления. Основным достоинством, позволяющим использовать эту функцию в шифровальных алгоритмах является ее обратимость, при отсутствии потери информации.

Русский

2014-03-24

131.96 KB

78 чел.

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

Алгоритм шифрования XOR.

Цель работы.

Целью данной работы является изучение Алгоритма шифрования XOR при использовании открытого ключа и гаммы псевдослучайных чисел.

Теоретическая часть.

XOR – это функция  булевой алгебры, носящей название «исключающее или», данная функция используется для работы с данными представленными в двоичной системе исчисления. Основным достоинством, позволяющим использовать эту функцию в шифровальных алгоритмах является ее обратимость, при отсутствии потери информации.

Как ни странно, но самым простым и одним из самых эффективных (при правильном использовании) алгоритмов шифрования является так называемое XOR-шифрование.
Как известно из булевой алгебры, операция логического сложения «» по модулю 2 (или логического исключаещего ИЛИ — XOR, eXclusive OR) имеет следующую семантику:

То есть, операция z = x y по сути поразрядная (побитовая — результат не зависит от соседних битов). Если только один из соответствующих битов равен 1, то результат 1. А если оба 0 или оба 1, то результат 0. Если внимательно посмотреть на результат применения XOR к двум двоичным числам, то можно заметить, что мы можем восстановить одно из слагаемых при помощи второго: x =  или  y = .

1) Логическое умножение или конъюнкция:

Конъюнкция - это сложное логическое выражение, которое считается истинным в том и только том случае, когда оба простых выражения являются истинными, во всех остальных случаях данное сложеное выражение ложно.
Обозначение: F = A & B.

Таблица истинности для конъюнкции

A

B

F

1

1

1

1

0

0

0

1

0

0

0

0

2) Логическое сложение или дизъюнкция:

Дизъюнкция - это сложное логическое выражение, которое истинно, если хотя бы одно из простых логических выражений истинно и ложно тогда и только тогда, когда оба простых логических выраженныя ложны.
Обозначение: F = A + B.  Таблица истинности для дизъюнкции

A

B

F

1

1

1

1

0

1

0

1

1

0

0

0

3) Логическое отрицание или инверсия:

Инверсия - это сложное логическое выражение, если исходное логическое выражение истинно, то результат отрицания будет ложным, и наоборот, если исходное логическое выражение ложно, то результат отрицания будет истинным. Другими простыми слова, данная операция означает, что к исходному логическому выражению добавляется частица НЕ или слова НЕВЕРНО, ЧТО.

Таблица истинности для инверсии

A

неА

1

0

0

1

4) Логическое следование или импликация:

Импликация - это сложное логическое выражение, которое истинно во всех случаях, кроме как из истины следует ложь. То есть данная логическая операция связывает два простых логических выражения, из которых первое является условием (А), а второе (В) является следствием.

Таблица истинности для импликации

A

B

F

1

1

1

1

0

0

0

1

1

0

0

1

5) Логическая равнозначность или эквивалентность:

Эквивалентность - это сложное логическое выражение, которое является истинным тогда и только тогда, когда оба простых логических выражения имеют одинаковую истинность.

Таблица истинности для эквивалентности

A

B

F

1

1

1

1

0

0

0

1

0

0

0

1

Функции в Delphi:

  1. Функция Chr конвертирует целое число IntValue или в AnsiChar или в WideChar
  2. Функция Ord возвращает порядковое значение символа или элемента перечисления в виде неотрицательного целого.
  3. Функция Length возвращает или число символов в String, или число элементов в Array.
  4. Ключевое слово Div дает целое число полученное в результате деления делимого делителеля.

Операторы цикла в Delphi:

  1.  оператор цикла For – Do

Синтаксис оператора имеет две разновидности:

For счетчик цикла:=нач.знач. To конеч.знач. Do оператор

For счетчик цикла:=нач.знач. Downto конеч.знач. Do оператор

Здесь конструкция For .. Do называется заголовком цикла, оператор – телом цикла.

Для циклов должны соблюдаться следующие правила и ограничения:

  1. начальное и конечное значения счетчика цикла должны быть одинаковых простых типов, кроме Real;
  2. в теле цикла счетчик не должен менять значение;
  3. вход в цикл минуя заголовок запрещен;
  4. для первой разновидности начальное значение не должно быть больше конечного;
  5. для второй разновидности начальное значение не должно быть меньше конечного.

Первая разновидность оператора цикла For работает следующим образом. Сначала счетчик цикла принимает нач.знач. и выполняется оператор, расположенный вслед за словом Do. Затем значение счетчика будет увеличено на шаг счетчика 1 и вновь будет выполнен оператор и т. д., пока счетчик не переберет все значения от нач.знач. до конеч.знач.

Пример.

s:= 0;
For i:=1 to 44 do s:= s + z[i];

В результате в переменной s будет накоплена сумма первых 44 элементов массива z.

Другая разновидность оператора For отличается лишь отрицательным шагом –1 счетчика.

  1.  Оператор цикла While – Do

Синтаксис оператора:

While логическое выражение Do оператор;

Цикл выполняет оператор, расположенный вслед за словом Do до тех пор, пока истинно логическое выражение, расположенное за словом While ("выполняй, пока истинно").

Пример.

x:= 0;
i:=0;
While (x < 101.667) do
Begin
Inc (i);
X:= X + 5.617;
Y[i]:= Func (i + 6, 9 * i, X);
End;

В этом примере цикл будет выполняться до тех пор, пока не выполнится условие x < 101.667. В теле цикла переменная X с каждым шагом цикла увеличивает свое значение на 5.617 так, что на определенном шаге условие x < 101.667 впервые не будет выполнено. В этот момент без входа в тело цикл закончит работу.

  1.  Оператор цикла Repeat – Until

Синтаксис оператора:

Repeat
Оператор1;
Оператор2;

ОператорN;
Until логическое выражение;

Цикл работает, пока логическое выражение ложно ("повторяй, пока не выполнится").

Пример.

s:= 0;
i:=0;
Repeat
Inc (i); 
s:= s + z[i];
Until (i = 44);

В этом примере цикл будет выполняться до тех пор, пока не выполнится условие i = 44. Результат будет тот же, что в примере для For-цикла.

Функции в MathCad:

  1.  round - округление z по числу n. Если n опущен, z округляется к самому близкому целому числу.
  2.  rnd - выдаёт однородно распределенное случайное число между 0 и x.
  3.  matrix(m, n, f) -  выдаёт m x n матрицу, в которой ijth элемент дается как f(i, j).

Эта функция как правило доступна в любом математической или программной среде, позволяющей использовать данные в двоичной системе исчисления. В системе MathCad функция xor реализуется встроенной функцией xor(a,b), а в среде Delphi 

операцией -   a xor b.

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

Рис. 1 Панель векторов и матриц

Диапазон чисел для задания циклов и диапазонов можно получить при помощи функции m..n в палитре вычислений.

Рис2. Палитра вычислений.

Матрицы задаются через палитру векторов и матриц  функцией вектор и матрица, а для ее создания необходимо указать количество строк(rows) и столбцов(columns). Для извлечения чисел из массива необходимо воспользоваться функцией индекс(subscript) в палитре матриц и векторов.

Для реализации алгоритма XOR в среде Delphi  необходимо использовать или массивы или строки. Массивы задаются в разделе объявления переменных(var)

в виде A: array[1...10] of char; но в данной работе можно воспользоваться свойствами строковых типов данных и вместо массивов использовать данные стокового типа(s: string;). Для реализации данного алгоритма могут потребоваться функции преобразования типов данных chr(a:integer) и ord(с:char). При работе со строковыми типами данных может пригодится функция Length(s:string);.

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

Задание для лабораторной  работы.

1) Реализовать алгоритм XOR шифрования в математической системе MathCad, исходным сообщением является одномерный массив с общим числом элементов 20, элементами массива являются  числа 0 и 1, ключ представляет собой одномерный массив из 5 элементов 0 и 1. Шифротекста представить виде  одномерного массива из 20 элементов результата каждый элемент которого является результатом операции XOR между элементом сообщения и элементом шифротекста.

2) Реализовать алгоритм XOR шифрования в среде Delphi, при условии, что исходным сообщением является строка текста длиной 15-20 символов, а ключом строка текста из 7-10 символов, вводимых через компонент Edit, вывод шифротекста должен осуществляться в компонент Memo.

Порядок выполнения работ.

1-ое задание

  1. При помощи round и rnd  создаем функцию, генерирующая нули и единицы.
  2. Задаем исходное сообщение, при помощи функции matrix задаем одномерный массив с общим числом элементов 20.
  3. Задаем ключ, при помощи функции matrix задаем одномерный массив с общим числом элементов 5.
  4. Выводим значения исходного сообщения.
  5. Выводим значения ключа.
  6. Применяем XOR к обеим матрицам

  1. Задаем зашифрованное сообщение, при помощи функции matrix задаем одномерный массив с общим числом элементов 20.

  1. Выводим зашифрованное сообщение.

2-ое задание

  1. Создаем форму на которой устанавливаем такие объекты как «Edit1», «Edit2», «Memo1», «Button1», «Button2».

  1. В общей  секции объявления переменных «var» задаем:

r:integer=1;

  1. Во вкладке Unit1 создаем function XOREncrypt(Text,Key: string): string; которая реализует алгоритм шифрования XOR.
  2. Используя секцию объявления переменных «var» зададим: счетчик, ключ и шифрованную букву.

var

i:integer;  // Счетчик

LKey:string;  //  Длинный ключ

Word:char;  //  Шифрованная буква

  1. Задаем цикл который будет добивать наш ключ до размеров сообщения для шифрования и цикл который будет каждую букву из сообщения суммировать при помощи «исключающего или»  с буквой из длинного ключа:

Begin

for i:=0 to (Length(Text) div length(Key)) do

LKey:=LKey+Key;

for i:=1 to length(Text) do

begin

Word:=chr ((ord(Text[i]) XOR ord(LKey[i])));

Result:=Result+Word;

end;

end;

  1. Два раза щелкаем левой кнопки мыши на кнопке «GO»
  2. При помощи секции объявления переменных «var» зададим:

var

Text,Encrypt_Text,Decrypt_Text:string;

  1. Прописываем алгоритм считывания сообщения и ключа и вывода зашифрованного сообщения в поле memo1.

begin

Text:=edit1.Text;

Encrypt_Text:=XOREncrypt(Text,edit2.Text);

memo1.Lines.Add('-----' +inttostr(r)+ ' Шифрование -------------------------');

memo1.Lines.Add('Зашифрованное слово: ' + Encrypt_Text);

Decrypt_Text:=XOREncrypt(Encrypt_Text,edit2.Text);

memo1.Lines.Add('Шифруемое слово: ' + edit1.Text);

memo1.Lines.Add('-----------------------------------------------------------');

memo1.Lines.Add(' ');

inc(r);

end;

  1. Два раза щелкаем левой кнопки мыши на кнопке «Выход» и прописываем ей функцию close.
  2. При нажатии на кнопку введенный текст в поле Edit1 присваивается значению Text. Далее присваиваем например Encrypt_Text:= XOREncrypt(Text, edit2.Text); то есть ссылаемся на функцию XOREncrypt которая реализует алгоритм шифрования XOR. Потом выводим значения зашифрованного текста и шифруемого слова в поле Memo1.

Контрольные вопросы.

  1. Булевы операции, их типы, условные обозначения и таблицы истинности.
  2. Алгоритм шифрования XOR.
  3. Назначение функций chr, ord, length, div.
  4. Операторы циклов в среде Delphi(или Pascal).

Содержание отчета.

1.Отчет должен быть выполнен на бумаге формата А4.

2.Отчет должен содержать  краткую теорию по теме работы.

3.Отчет должен содержать текст программ MathCad с комментариями.

3.Отчет должен содержать листинг программ выполненных в  Delphi с комментариями.

4.Отчет должен содержать выводы о проделанной лабораторной работе.


 

А также другие работы, которые могут Вас заинтересовать

29974. Развитие психики в процессе эволюции животного мира 48.5 KB
  Развитие психики в процессе эволюции животного мира Психика системное свойство высокоорганизованной материи заключается в активном отражении субъектом объективного мира в построении картины мира и саморегуляция на этой основе своего поведения и деятельности. Зоопсихизм путь к изучению психики ч з изучение поведения. Низший уровень простейшие: преобладают инстинктивные формы поведения. В основном форма поведения таксисы простейшие движения у некоторых появляется подобие брачных игр черви.
29975. ВПФ по Л.С. Выготскому. Их происхождение, свойства, генезис 57 KB
  Выготский создал культурноисторическую теорию психики человека. Иногда ее называют теорией общественноисторического происхождения высших психических функций человека. 1 измененное взаимоотношение человека и природы. 2 высшие появляются у человека произвольные: человек может заставить себя запомнить некоторый материал обратить внимание на какойто предмет организовать свою умственную деятельность.
29976. ПРОБЛЕМА СОЗНАНИЯ В ПСИХОЛОГИИ 147 KB
  Поэтому в психологии говорят о единстве сознания челка и его деятельности. Явления сознания как предмет интроспективной психологии XIX века. Существование сознания главный и безусловный факт а задача психологии проанализировать состояния и содержание сознания предмет сознание.
29977. Классификация неосознаваемых явлений 56 KB
  Активность монад протекающая в сфере психических актов имеет различную степень сознательности: от почти полностью бессознательного до ясного и четкого сознания. Низшие уровни сознания называются малыми перцепциями их сознательная реализация получила названия апперцепции. Он сформулировал концепцию порога сознания. Порог сознания уровень психической деятельности ниже которого идеи оказываются бессознательными.
29978. Методы неосознаваемых явлений в психоанализе 55 KB
  предсознательное скрытое латентное бессознательное потенциально сознательное: может проникнуть в сознание т. бессознательное вытесненная бессознательная психика не обладает способностью проникнуть в сознание: это может только представитель вытесненной бессознательной психики. Бессознательное это место сосредоточения влечений все вытесненное из сознания как недопустимое па своей природе.Фрейда Под влиянием цензуры происходит вытеснение идеи с которой связано несовместимое желание в...
29979. Психологическая теория деятельности в отеч.психологии 56 KB
  Психологическая теория деятельности в отеч. придумал Леонтьев Психологическая теория деятельности начала разрабатываться в 20х начале 30х гг. Но главное состояло в том что авторы теории деятельности взяли на вооружение философию диалектического материализма теорию К. Этот общий философский тезис нашел в теории деятельности конкретнопсихологическую разработку.
29980. Понятие действия. Виды. Соотношение действий и Деятельности 43 KB
  Понятие действия. того результата который должен быть достигнут в ходе выполнения действия. Характеристики действия: действие включает в качестве необходимого компонента акт сознания в виде постановки и удержания цели. через понятие действия теория деятельности утверждает принцип активности точка анализа Д субъект.
29981. Ощущения. Общая характеристика 64.5 KB
  Ощущения. Физиологическая основа ощущения. Физиологической основой ощущения является нервный процесс возникающий при действии раздражителя на адекватный ему анализатор. сигнализируют о движениях кинестетические ощущения ощущение равновесия статические ощущения.
29982. Восприятие. Общая характеристика 88 KB
  Восприятие это отражение в сознании человека предметов или явлений при их непосредственном воздействии на органы чувств. Маклаков Восприятие включает в себя ощущение и основывается на нём. Поэтому восприятие очень часто называют перцептивной системой человека. из гештальта пр восприятие мелодии 4.