Для студентов МГТУ им. Н.Э.Баумана по предмету Криптографические Методы Защиты ИнформацииКМЗИ "Алгоритм Rijndael"КМЗИ "Алгоритм Rijndael"
5,00554
2024-05-062025-04-03СтудИзба
ДЗ 3: КМЗИ "Алгоритм Rijndael"
Описание
Криптографические методы защиты информации. Задание №3.
1. Напишите программу, представляющую элемент из 𝐺𝐹(256) в полиномиальной форме и наоборот. Полиномы выводите в общепринятом формате (например, вместо x^1 выводите x, а вместо x^0 выводите 1).
2. Напишите функцию, умножающую два двоичных многочлена степени не выше 31.
3. Напишите функцию умножения двух элементов из 𝐺𝐹(256). При выводе продемонстрируйте
результаты для различных неприводимых многочленов, с помощью которых определяется операция умножения.
4. Реализуйте расширенный алгоритм Евклида для 𝐺𝐹(256).
5. Напишите функцию, которая ищет мультипликативный обратный для элемента из 𝐺𝐹(256).
6. Разработайте метод генерации прямого S-box и обратного S-box алгоритма Rijndael.
7. Пусть 𝑛 ∈ ℕ. Пусть, далее, 𝑓, 𝑔 ∈ 𝐺𝐹 (256)[𝑋 ]/(𝑋 𝑛 + 1) , то есть
𝑛−1
𝑓 = ∑ 𝑓 𝑘 𝑋 𝑘 ,
𝑘=0
𝑛−1
𝑔 = ∑ 𝑔 𝑘 𝑋 𝑘 ,
𝑘=0
где 𝑓 𝑘 , 𝑔 𝑘 ∈ 𝐺𝐹 (256) . Реализуйте операцию умножения многочленов 𝑓 и 𝑔.
8. Разработайте приложение, обеспечивающее безопасность данных на основе алгоритма Rijndael. Реализуйте возможность выбора длины блока шифротекста и длины ключа, режима сцепления блока шифротекста. Реализуйте методы сцепления блоков шифротекста ECB, CBC, OFB, CFB.
Спроектируйте ваше программное решение так, чтобы класс режима сцепления в качестве параметра принимал алгоритм шифрования (Например, реализуйте паттерн состояние или стратегия).
1. Напишите программу, представляющую элемент из 𝐺𝐹(256) в полиномиальной форме и наоборот. Полиномы выводите в общепринятом формате (например, вместо x^1 выводите x, а вместо x^0 выводите 1).
2. Напишите функцию, умножающую два двоичных многочлена степени не выше 31.
3. Напишите функцию умножения двух элементов из 𝐺𝐹(256). При выводе продемонстрируйте
результаты для различных неприводимых многочленов, с помощью которых определяется операция умножения.
4. Реализуйте расширенный алгоритм Евклида для 𝐺𝐹(256).
5. Напишите функцию, которая ищет мультипликативный обратный для элемента из 𝐺𝐹(256).
6. Разработайте метод генерации прямого S-box и обратного S-box алгоритма Rijndael.
7. Пусть 𝑛 ∈ ℕ. Пусть, далее, 𝑓, 𝑔 ∈ 𝐺𝐹 (256)[𝑋 ]/(𝑋 𝑛 + 1) , то есть
𝑛−1
𝑓 = ∑ 𝑓 𝑘 𝑋 𝑘 ,
𝑘=0
𝑛−1
𝑔 = ∑ 𝑔 𝑘 𝑋 𝑘 ,
𝑘=0
где 𝑓 𝑘 , 𝑔 𝑘 ∈ 𝐺𝐹 (256) . Реализуйте операцию умножения многочленов 𝑓 и 𝑔.
8. Разработайте приложение, обеспечивающее безопасность данных на основе алгоритма Rijndael. Реализуйте возможность выбора длины блока шифротекста и длины ключа, режима сцепления блока шифротекста. Реализуйте методы сцепления блоков шифротекста ECB, CBC, OFB, CFB.
Спроектируйте ваше программное решение так, чтобы класс режима сцепления в качестве параметра принимал алгоритм шифрования (Например, реализуйте паттерн состояние или стратегия).
Характеристики домашнего задания
Учебное заведение
Семестр
Номер задания
Просмотров
5
Размер
3,14 Mb
Список файлов
CMZI_DZ3_2
source
Part1.py
QBinDigit.py
algorithms.py
data.py
des_data.py
exceptions.py
part2.py
part3.py
signals.py
support_func.py
ui
binmainwindow.py
binmainwindow.ui
crypto_file_widget.py
crypto_file_widget.ui
crypto_window.py
crypto_window.ui
icons8-eye-24.png
icons8-invisible-24.png
open_file_choice.py
open_file_choice.ui
second_part_window.py
second_part_window.ui
.gitignore
2.py
CBC.crypto
CBC.png
CBC_decrypted.png
CFB.png