Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Алгоритм генерации подключей для расшифрования ⇐ ПредыдущаяСтр 2 из 2
Раундовые ключи для расшифрования рассчитываются из раундовых ключей шифрования по следующим формулам: (1) Для ключа key =00111010100101001101011000111111 рассчитанные значения раундовых ключей для расшифрования приведены на рис.17.
Рисунок 17 – Подключи шифрования и расшифрования
Задание 5 Написатьметодround_keys_to_decrypt(self, key), гдеkey – ключшифрования(рис.18). Функция формирует список раундовых ключей для расшифрованияпо формуле (1).
Рисунок 18
Для =734533245 результат работы функции приведен на рис.19.
Рисунок 19 defround_keys_to_decrypt(self, key): K = self.round_keys(key) L = [ ] L.append (K[4]) L.append (self.apbox(K[3])) L.append (self.apbox(K[2])) L.append (self.apbox(K[1])) L.appendK[0]) return L Задание6 Написатьметодdecrypt(self,x, rl, rounds), который выполняет расшифрование одного блока данных (числа x). rl-список ключей для расшифрования, rounds-количество раундов (в данном случае - 4). Структурно метод совпадает с методом шифрования encrypt (рис.20), т.к. используется одна и та же схема (рис.1).
Рисунок 20
Отличие заключается в том, что вместо round и last_round надо вызывать другие функции, т.к. обработка внутри раундов меняется – используются обратные перестановки и замены. Следовательно, надо еще добавить методы round_decrypt и last_round_decrypt. Пример вызова метода приведен на рис.21.
Рисунок 21 defround_decypt(self, p, k): u=p v = [] # run through substitution layer for x in self.demux(u): v.append(self.asbox(x))
# run through permutation layer w =self.mix(self.apbox(self.mux(v)),k) return w
deflast_round_decrypt(self, p, k): u=p v = [] # run through substitution layer
for x in self.demux(u): v.append(self.asbox(x)) #XOR key u = self.mix(self.mux(v), k) return u def decrypt(self, x, lk, rounds): print(x,lk[0]) x=self.mix(x,lk[0]) for i in range(1,rounds): print('раунд=',i+1) x = self. round_decypt(x, lk[i]) print('раунд=',rounds) x = self.last_round_decrypt(x,lk[rounds]) return x Задание7 Написатьфункциюdecrypt_data(self, data, key, rounds), гдеdata –списокчисел (данные, прочитанныеиззашифрованногофайла), key – ключшифра, rounds – количествораундов. В этой функции надо сформировать список раундовых ключей расшифрования и для каждого числа (16 бит) в списке data вызвать функцию decrypt. Функция возвращает список расшифрованных данных (рис.22).
Рисунок 22 defdecrypt_data(self, data, key, rounds): res=[] lk = self.round_keys_to_decrypt(key) for d in data: res.append(self.decrypt(d,lk,rounds)) returnres Задание 8 Зашифровать и расшифровать содержимое файла (‘123.txt’) с помощью функций encrypt_data и decrypt_data. Для получения содержимого файла в виде списка чисел использовать функцию read_data_2byte. Для записи функции в файл использовать функцию write_data_2byte. Убедиться, что расшифрованный после шифрования файл совпадает с исходным (рис.23).
Рисунок 23 Задание 9 Расшифровать файл d5_spn_c_all.bmp – зашифрованное шифром на основе сети SPN изображение в формате bmp. Ключ равен 34523456231. Полученное изображение в формате bmp зашифровать. Сохранить в файле следующие данные: первые 50 байт – исходные (незашифрованные) данные, все последующие байты – зашифрованные. Полученный файл открыть в редакторе. Вставить в отчет исходное и зашифрованное таким образом изображение. Задание 10 Расшифровать файл d9_spn_c_cbc_all.bmp – зашифрованное шифром на основе сети SPN изображение в формате bmp. Режим шифрования CBC. Ключ равен 345238754631. Вектор инициализации равен 9. Полученное изображение в формате bmp зашифровать, используя режим шифрования CBC. Сохранить в файле следующие данные: первые 50 байт – исходные (незашифрованные) данные, все последующие байты – зашифрованные. Полученный файл открыть в редакторе. Вставить в отчет исходное и зашифрованное таким образом изображение. Задание 11 Расшифровать файл f3_spn_c_ofb_all.bmp – зашифрованное шифром на основе сети SPN изображение в формате bmp. Режим шифрования OFB. Ключ равен 37884354631. Вектор инициализации равен 29. Полученное изображение в формате bmp зашифровать, используя режим шифрования OFB. Сохранить в файле следующие данные: первые 50 байт – исходные (незашифрованные) данные, все последующие байты – зашифрованные. Полученный файл открыть в редакторе. Вставить в отчет исходное и зашифрованное таким образом изображение. Задание 12 Расшифровать файл f7_spn_c_cfb_all.bmp– зашифрованное шифром на основе сети SPN изображение в формате bmp. Режим шифрования CFB. Ключ равен 37635643231. Вектор инициализации равен 39. Полученное изображение в формате bmp зашифровать, используя режим шифрования СFB. Сохранить в файле следующие данные: первые 50 байт – исходные (незашифрованные) данные, все последующие байты – зашифрованные. Полученный файл открыть в редакторе. Вставить в отчет исходное и зашифрованное таким образом изображение. Задание 13 Расшифровать файлd11_spn_c_ctr_all.bmp– зашифрованное шифром на основе сети SPN изображение в формате bmp. Режим шифрования CTR. Ключ равен 37643325531. Вектор инициализацииравен 49. Полученное изображение в формате bmp зашифровать, используя режим шифрования СTR. Сохранить в файле следующие данные: первые 50 байт – исходные (незашифрованные) данные, все последующие байты – зашифрованные. Полученный файл открыть в редакторе. Вставить в отчет исходное и зашифрованное таким образом изображение. Литература [1] Бабенко Л.К., Ищукова Е.А. "Современные алгоритмы блочного шифрования и методы их анализа. Учебное пособие для вузов", Гелиос АРВ, 2006, 376 с. [2] DouglasR. Stinson. Cryptography: Theory and Practice, Third Edition (Discrete Mathematics and Its Applications), p.616, 2005. [3] Christopher Swenson. Modern Cryptanalysis: Techniques for Advanced Code Breaking, Wiley Publishing, 2008
|
|||||||||
Последнее изменение этой страницы: 2018-05-10; просмотров: 161. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |