Итак, это третья часть обучения DES с использованием Python, и в этой части я собираюсь объяснить шифрование DES. В этой части будут использоваться разделы из предыдущих двух частей, то есть генерация ключей и функция F ().

Шифрование DES - это блочный шифр, который обрабатывает открытый текст в группе, а 64-битный размер блока, используемый DES, и требует 64-битного ключа, который используется для генерации 16 подключей для каждого раунда. Например, я возьму открытый текст и введу шестнадцатеричный ключ, то есть 16 шестнадцатеричных цифр для открытого текста и шестнадцатеричный ключ той же длины. У нас будет функция преобразования из шестнадцатеричного в двоичный код, чтобы преобразовать его в двоичный. Опять же, для упрощения я буду использовать метод обработки строк. Предположим, что открытый текст (M) = «0123456789ABCDEF». Код ниже показывает преобразование шестнадцатеричных цифр в двоичный эквивалент. Я реализовал две функции hexString_to_binary_bits1 () и hexString_to_binary_bits2 (), одна просто использует отображение, а другая использует встроенные функции Python int () и bin () для преобразования. Любой из них можно использовать по необходимости.

Итак, как только мы преобразовали текстовое сообщение в двоичный эквивалент, мы можем перейти к шифрованию DES. Как я уже говорил, DES имеет 16 этапов шифрования и дешифрования. Процесс понятен на следующем рисунке 1.

Начальная перестановка

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

Разделение открытого текста (L, R)

DES разделяет переставленный открытый текст на два равных перед тем, как войти в раунды. Каждая половина передается в следующий раунд после того, как каждая из них обрабатывается отдельно. Если вы заметили на Рисунке 1, после каждого раунда каждая половина значения меняется местами в следующем раунде. Мы вернемся к этому позже, но перед этим просто разделите переставленный текст.

Обратная перестановка

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

Шифрование DES

Теперь у нас есть вся необходимая функция, и каждый шаг объяснен, поэтому мы перейдем к циклам DES и попытаемся реализовать его. В каждом раунде DES правая половина, то есть 32 бита, и ключ раунда передаются функции F (), которую мы реализовали в предыдущей части 2. Вывод функции F (), т.е. 32 бита - это XOR с 32-битной левой половиной, результат которого передается в следующий раунд как правая половина, а правая половина передается в следующий раунд как левая половина. И этот процесс повторяется во всех раундах, кроме последнего раунда, т.е. 16 раунда. Пожалуйста, обратитесь к рисунку 1 выше, чтобы понять процесс, а приведенный ниже код проясняет ситуацию.

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

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

Спасибо. Наслаждаться. Шифрование DES с помощью Python… или Easy way .. !!!