Вы находитесь на странице: 1из 6

Технический Университет Молдовы

Факультет Вычислительной техники, Информатики и


Микроэлектроники

Департамент Информатики и Системной Инженерии

Отчёт

по лабораторной работе N3

Тема: “Metoda de criptare DES și Metoda de criptare AES”


Disciplina: TSI

Выполнил: Bahrin Ion

Группа: IA-214

Проверил: lect.univ: V. Struna

КИШИНЕВ 2023
Obiective: Реализовать шифрование и дешифрование методами DES&AES.
DES:
Это симметричный блочный шифр, введенный Национальным институтом
стандартов и технологий (NIST) в 1977 году. Это реализация Feistel Structure
(многоцелевого шифра, который делит весь текст на две части и работает над
каждой частью в отдельности). ). Он работает на 64-битном ключе ввода и
использует 56-битный общий ключ для создания 64-битного шифротекста. В
DES весь простой текст делится на две части по 32 бита каждая перед
обработкой, и одни и те же операции выполняются над отдельными частями.
Каждая часть подвергается операции из 16 раундов, и после этих операций
делается окончательная перестановка для получения 64-битного
зашифрованного текста.

Различные функции, участвующие в раундах - это Расширение, Перестановка


и Замена, операция XOR с круглым ключом. Дешифрование следует тому же
процессу, что и шифрование, но в обратном порядке. Хотя DES считался
менее безопасным для шифрования конфиденциальных данных
правительства, поскольку он использует меньший общий ключ, для
преодоления этого тройного DES был введен, но он также не считался
хорошим алгоритмом, поскольку он оказывается очень медленным для
шифрования данных. Даже небольшое изменение во входном тексте
приводит к созданию совершенно другого зашифрованного текста в DES.

Выполнение работы:

Код DES:
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives.ciphers import Cipher,
algorithms, modes
from cryptography.hazmat.backends import default_backend
import base64

def encrypt(key, plaintext):


iv = b'00000000' # начальный вектор
cipher = Cipher(algorithms.TripleDES(key), modes.CBC(iv),
backend=default_backend())
encryptor = cipher.encryptor()
padded_plaintext = plaintext + b'\0' * (8 - len(plaintext) %
8) # дополняем строку до кратности 8 байт
ciphertext = encryptor.update(padded_plaintext) +
encryptor.finalize()
return base64.b64encode(ciphertext).decode('utf-8')

def decrypt(key, ciphertext):


iv = b'00000000' # начальный вектор
cipher = Cipher(algorithms.TripleDES(key), modes.CBC(iv),
backend=default_backend())
decryptor = cipher.decryptor()
padded_plaintext =
decryptor.update(base64.b64decode(ciphertext)) +
decryptor.finalize()
return padded_plaintext.rstrip(b'\0')

# тестирование
key = b'secretke'
plaintext = b'Last Sunday group of comics from channel CBD
dropped a new video.'
ciphertext = encrypt(key, plaintext)
print('Зашифрованный текст:', ciphertext)
decrypted_text = decrypt(key, ciphertext)
print('Дешифрованный текст:', decrypted_text.decode('utf-8'))

AES:
Он появился на снимке после тройного DES, поскольку он оказался
медленным. Это один из наиболее широко используемых алгоритмов
симметричного блочного шифрования, используемых в настоящее время. Он
был введен Национальным институтом стандартов и технологий в 2001 году.
Он как минимум в шесть раз быстрее, чем тройной DES. В отличие от DES,
он работает по принципу «Замена и перестановка». Это следует
итеративному подходу. AES работает с байтами, а не с битами.

В AES обычный текст считается 126 битами, эквивалентными 16 байтам, с


секретным ключом 128 битов, который вместе образует матрицу 4 × 4
(имеющую 4 строки и 4 столбца). После этого шага он выполняет 10 раундов.
У каждого раунда есть свои подпроцессы, в которых 9 раундов включают в
себя процесс «Суббайты», «Строки сдвига», «Столбцы смешения» и
«Добавить ключи раунда», а в 10-м раунде все вышеперечисленные
операции, исключая «Столбцы микширования», создают 126-битный
шифротекст. В AES количество раундов зависит от размера ключа, то есть 10
раундов для 128-битных ключей, 12 раундов для 192-битного ключа и 14
раундов для 256-битных ключей. Он используется во многих протоколах,
таких как TLS, SSL и различных современных приложениях, которые
требуют высокой безопасности шифрования. AES также используется для
оборудования, которое требует высокой пропускной способности.

Код AES:
from Cryptodome.Cipher import AES
from Cryptodome.Random import get_random_bytes
from Cryptodome.Util.Padding import pad, unpad

# Получаем данные от пользователя


message = input('Введите сообщение для шифрования: ')
key = input('Введите ключ (16, 24 или 32 символа): ')
# Генерируем случайный вектор инициализации
iv = get_random_bytes(AES.block_size)

# Создаем объект шифрации


cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)

# Шифруем сообщение
padded_message = pad(message.encode('utf-8'), AES.block_size)
encrypted_message = cipher.encrypt(padded_message)

# Выводим зашифрованное сообщение и вектор инициализации


print('Зашифрованное сообщение:', encrypted_message.hex())
print('Вектор инициализации:', iv.hex())

# Создаем новый объект шифрации с использованием того же ключа и


вектора инициализации
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)

# Дешифруем сообщение
decrypted_message = unpad(cipher.decrypt(encrypted_message),
AES.block_size).decode('utf-8')

# Выводим исходное сообщение


print('Расшифрованное сообщение:', decrypted_message)
Выводы

Шифрование и дешифрование методами AES и DES являются важными средствами


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

Сравнение текстов онлайн-- https://xiao-steganography.en.softonic.com/ --


6.03.2023

Стеганография, что это такое? -- https://habr.com/ru/post/114597/ —6.03.2023

Вам также может понравиться