Криптография — это один из главных инструментов обеспечения безопасности. В предыдущей статье я рассказывал про шифрование в Python с помощью библиотек Cryptography и PyCryptodome. Сегодня поговорим про блочный шифр DES.
Еще по теме: Обфускация Python с помощью Cython
Шифрование с помощью DES Python
DES — это блочный шифр это означает, что текст для шифрования должен быть кратным восьми, поэтому вам нужно добавить пробелы в конце текста, который вы хотите зашифровать, чтобы получить восемь символов. Работа шифровального API происходит следующим образом:
Сначала создается экземпляр объекта шифра, вызвав функцию new() из соответствующего модуля шифрования с использованием следующего синтаксиса: Crypto.Cipher.DES.new(). Первый параметр — это криптографический ключ, и его длина зависит от используемого шифра. Вы можете передать дополнительные параметры, специфичные для шифра или режима работы.
Для шифрования данных вызовите метод encrypt() объекта шифра с текстом. Метод возвращает зашифрованный фрагмент текста.
Для дешифрования данных вызовите метод decrypt() объекта шифра с шифротекстом. Метод возвращает фрагмент обычного текста.
Следующий сценарий шифрует и имя пользователя, и сообщение, симулирует прием учетных данных сервером, а затем отображает расшифрованные данные:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
from Crypto.Cipher import DES # Дополните пользователя до 8 символов пробелами user = "user ".encode("utf8") message = "message ".encode("utf8") key = 'mycipher' # Создаем шифр с использованием DES cipher = DES.new(key.encode("utf8"), DES.MODE_ECB) # Шифруем имя пользователя и сообщение cipher_user = cipher.encrypt(user) cipher_message = cipher.encrypt(message) print("Cipher User: " + str(cipher_user)) print("Cipher message: " + str(cipher_message)) # Симулируем сервер, где приходят зашифрованные сообщения cipher = DES.new(key.encode("utf8"), DES.MODE_ECB) decipher_user = cipher.decrypt(cipher_user) decipher_message = cipher.decrypt(cipher_message) print("Decipher user: " + str(decipher_user.decode())) print("Decipher Message: " + str(decipher_message.decode())) |
Предыдущий сценарий шифрует данные с использованием DES, поэтому первое, что он делает, это импортирование модуля DES и создание объекта шифра, где значение параметра mycipher — это ключ шифрования.
Важно отметить, что ключи шифрования и дешифрования должны иметь одно и то же значение. В нашем примере мы используем переменную key как для метода шифрования, так и для метода дешифрования.
Вывод скрипта:
Еще один интересный алгоритм — это AES, главное отличие которого от DES заключается в возможности шифрования с разными размерами ключей. О нем поговорим в статье «Шифрование в Python с помощью алгоритма AES».
ПОЛЕЗНЫЕ ССЫЛКИ:
- Библиотеки для обфускации Python
- Асимметричное шифрование Python
- Шифрование и дешифрование в PowerShell