Академический Документы
Профессиональный Документы
Культура Документы
Отчёт
по лабораторной работе N3
Группа: IA-214
КИШИНЕВ 2023
Obiective: Реализовать шифрование и дешифрование методами DES&AES.
DES:
Это симметричный блочный шифр, введенный Национальным институтом
стандартов и технологий (NIST) в 1977 году. Это реализация Feistel Structure
(многоцелевого шифра, который делит весь текст на две части и работает над
каждой частью в отдельности). ). Он работает на 64-битном ключе ввода и
использует 56-битный общий ключ для создания 64-битного шифротекста. В
DES весь простой текст делится на две части по 32 бита каждая перед
обработкой, и одни и те же операции выполняются над отдельными частями.
Каждая часть подвергается операции из 16 раундов, и после этих операций
делается окончательная перестановка для получения 64-битного
зашифрованного текста.
Выполнение работы:
Код DES:
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives.ciphers import Cipher,
algorithms, modes
from cryptography.hazmat.backends import default_backend
import base64
# тестирование
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:
from Cryptodome.Cipher import AES
from Cryptodome.Random import get_random_bytes
from Cryptodome.Util.Padding import pad, unpad
# Шифруем сообщение
padded_message = pad(message.encode('utf-8'), AES.block_size)
encrypted_message = cipher.encrypt(padded_message)
# Дешифруем сообщение
decrypted_message = unpad(cipher.decrypt(encrypted_message),
AES.block_size).decode('utf-8')