35027

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

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

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

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

Русский

2014-03-24

131.96 KB

66 чел.

Лабораторная работа №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.Отчет должен содержать выводы о проделанной лабораторной работе.


 

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

39432. ПРОЕКТИРОВАНИЕ ЦИФРОВОЙ ЛИНИИ ПЕРЕДАЧИ. Расчет напряжения дистанционного питания 106.5 KB
  Расчет вероятности ошибки. Расчет затухания участков регенерации Для проверки правильности предварительного размещения НРП необходимо определить вероятность ошибки которая зависит от величины защищенности.3 Расчет вероятности ошибки. Расчет допустимой вероятности ошибки Переходные помехи и собственные шумы корректирующих усилителей приводят к появлению ошибок в цифровом сигнале которые вызывают искажение передаваемой информации.
39433. ЦИФРОВЫЕ И МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА 2.49 MB
  наук Ц75 Цифровые и микропроцессорные устройства : методические указания и задания к курсовому проекту для студентов специальностей 245 01 03 – Сети телекоммуникаций 245 01 02 – Системы радиосвязи радиовещания и телевидения. УДК ББК ISBN Учреждение образования Высший государственный колледж связи 2011 ВВЕДЕНИЕ Курсовой проект по дисциплине Цифровые и микропроцессорные устройства выполняется студентами специальностей 2–45 01 02 Системы радиосвязи радиовещания и телевидения 2–45 01 03 Сети телекоммуникаций третьего курса...
39434. МНОГОКАНАЛЬНЫЕ СИСТЕМЫ ПЕРЕДАЧИ (ЦИФРОВЫЕ) ЦСП 591.5 KB
  Выбор и характеристика системы передачи. В большинстве промышленно развитых стран осуществляется массовый выпуск цифровых систем передачи ЦСП использующих принципы импульснокодовой модуляции ИКМ и предназначенных для организации многоканальной передачи по городским соединительным линиям между АТС а также по междугородным линиям связи. В нашей стране применяется аппаратура для городских телефонных сетей обеспечивающих организацию 30 каналов ТЧ первичная система передачи ИКМ30 аппаратура для городских и зоновых...
39435. Создание качественных каналов и связи на направлении Брест-Кобрин-Пинск 314.5 KB
  В состав аппаратуры ИКМ120у входят: аналогоцифровое оборудование формирования стандартных первичных цифровых потоков АЦО оборудование вторичного временного группообразования ВВГ оконечное оборудование линейного тракта ОЛТ необслуживаемые регенерационные пункты НРП. В состав аппаратуры входят: оборудование вторичного временнго преобразования ВВГ оконечное оборудование линейного тракта ОЛТ необслуживаемые регенерационные пункты НРП а также комплект контрольноизмерительных приборов КИП. Оконечное оборудование линейного тракта...
39436. Создание качественных каналов и связи на направлении Гродно - Брест (через Слоним) 356.5 KB
  Основные параметры системы передачи Параметр Значение параметра Число организуемых каналов 480 Скорость передачи информации кбит с 34368 Тип линейного кода HDB3MI Расчетная частота кГц 17186 Номинальное затухание участка регенерации дБ 65 Номинальное значение тока...
39437. Разработка линии связи между ОП1 (Брест) и ОП2 (Гомель) через ПВ (Пинск) 387 KB
  Для этого на стойке в оконечном пункте размещены: оборудование линейного тракта на две системы; оборудование дистанционного питания НРП двух систем передачи; оборудование магистральной телемеханики; оборудование участковой телемеханики; комплект служебной связи КСС; панель ввода; панель обслуживания. 3 Необслуживаемый регенерационный пункт НРП Промежуточное оборудование линейного тракта размещается в грунтовых контейнерах полуподземного типа НРПГ2. Оборудование НРПГ2 обеспечивает...
39438. Реструктуризация управленческой структуры предприятия 198.1 KB
  Целью работы является анализ финансово-хозяйственной деятельности предприятия и выработка на этой основе рекомендаций по реструктуризации предприятия на материалах ООО «Торговый дом Холод» г. Заринск Алтайский край.
39439. Создание качественных каналов связи на заданном направлении 370.5 KB
  В состав аппаратуры входит следующее оборудование: вторичного временного группообразования ВВГ оконечное оборудование линейного тракта ОЛТ необслуживаемые регенерационные пункты НРП а также комплект контрольноизмерительных приборов КИП. Сформированный в оборудовании ВВГ цифровй сигнал в коде МЧПИ или ЧПИ поступает в ОЛТ которое осуществляет согласование выхода оборудования ВВГ с линейным трактом дистанционное питание НРП телеконтроль и сигнализацию о состоянии оборудования линейного тракта служебную связь между оконечным...