Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / Курсовой Криптография DES.docx
Скачиваний:
138
Добавлен:
23.07.2013
Размер:
445.83 Кб
Скачать

3. Режим des-cbc

3.1. Общая схема шифрования

В этом режиме исходный набор байт M также, как и в режиме ECB, разбивается на 64-битовые блоки: M = M(1)M(2)...M(n). Первый блок M(1) складывается по модулю 2 с 64-битовым начальным вектором IV, который меняется ежедневно и держится в секрете. Полученная сумма затем шифруется с использованием ключа DES, известного и отправителю, и получателю информации. Полученный 64-битовый блок шифртекста C(1) складывается по модулю 2 со вторым блоком исходного текста, результат шифруется и получается второй 64-битовый блок шифртекста C(2) и т.д. Процедура повторяется до тех пор, пока не будут обработаны все блоки исходного текста (рисунок 5).

Рисунок 5. Общая схема шифрования и дешифрования

Плюс данного режима состоит в том, что он не позволяет накапливаться ошибкам при передаче. Блок M(i) является функцией только C(i-1) и C(i). Поэтому ошибка при передаче приведет к потере только двух блоков исходного текста.

3.2. Исходный текст процедуры шифрования и дешифрования

// Шифрование CBC

public byte[] CRYPT_CBC()

{

CBCFlag = true;

byte[] b = GlueAndToByte(CRYPT());

CBCFlag = false;

return b;

}

// ДеШифрование CBC

public byte[] DeCRYPT_CBC()

{

CBCFlag = true;

byte[] b = GlueAndToByte(DeCRYPT());

CBCFlag = false;

return b;

}

3.3. Пример шифрования и расшифрования

Исходный текст: ShvedovD

Ключ: qwertyi

Начальный вектор: StartDES

Исходный блок бит... Блок № 0:

11001010 00010110 01101110 10100110 00100110 11110110 01101110 00100010

Перевернутые биты в блоке...:

01010011 01101000 01110110 01100101 01100100 01101111 01110110 01000100

Ключ из 56 бит:

0111000__1011101__1101100__1010111__0010011__1010001__1110010__1101001__

Ключ из 64 бита, после добавления бит четности:

01110001 10111011 11011000 10101111 00100111 10100011 11100100 11010010

**********************ШИФРОВАНИЕ**********************

Исходное сообщение:

01010011 01101000 01110110 01100101 01100100 01101111 01110110 01000100

Начальный вектор:

01010011 01110100 01100001 01110010 01110100 01000100 01000101 01010011

Исходное сообщение XOR начальный вектор:

00000000 00011100 00010111 00010111 00010000 00101011 00110011 00010111

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

00000000 11011110 10001110 11101100 00000000 01100000 00100010 11101100

HPart:

00000000 11011110 10001110 11101100

LPart:

00000000 01100000 00100010 11101100

Ключ 64 бита. С битами четности:

01110001 10111011 11011000 10101111 00100111 10100011 11100100 11010010

ключ (56). Перестановка РС1:

11101110 11000101 01111011 10001011 10100101 10000000 11100111

ключ (28C (Left)):

1110 1110 1100 0101 0111 1011 1000

ключ (28D (Right)):

1011 1010 0101 1000 0000 1110 0111

-----------------Итерация №1-----------------

Ключ из 56 бит после циклического сдвига, итерация 1:

1101110110001010111101110001 0111010010110000000111001111

Ключ из 48 бит. Перестановка РС2:

01011101 11001101 01000111 00110111 00010111 11001001

LPart, Началась функция модификации f:

00000000 01100000 00100010 11101100

Перевели 32 в 48. результат функции расширения Е:

00000000 00000011 00000000 00010000 01010111 01011000

Xor. побитово суммируем по модулю 2:

01011101 11001110 01000111 00100111 01000000 10010001

Преобразовали 48 в 32. С помощью узлов замены:

10110101 10110101 01000100 10111100

Перестановка бит в конце функции. Перестановка P:

10001110 10000100 01010111 00111111

HPart после модификации. HPart XOR f(LPart,Key):

10001110 01011010 11011001 11010011

После обмена HPart:

00000000 01100000 00100010 11101100

После обмена LPart:

10001110 01011010 11011001 11010011

-----------------Итерация №16-----------------

Ключ из 56 бит после циклического сдвига, итерация 16:

1110111011000101011110111000 1011101001011000000011100111

Ключ из 48 бит. Перестановка РС2:

10011110 01111100 00110101 10100101 10100101 00001011

LPart, Началась функция модификации f:

10101011 11110100 11111000 11000000

Перевели 32 в 48. результат функции расширения Е:

01010101 01111111 10101001 01111111 00010110 00000001

Xor. побитово суммируем по модулю 2:

11001011 00000011 10011100 11011010 10110011 00001010

Преобразовали 48 в 32. С помощью узлов замены:

11000101 01010100 01010101 10001111

Перестановка бит в конце функции. Перестановка P:

00101100 10000111 11111000 00111001

HPart после модификации. HPart XOR f(LPart,Key):

11100100 10001100 11111111 11101000

Результат шифрования блока. Конечная перестановка IP-1:

10000100 10000100 01110100 10011101 00101100 11101101 01101111 11111111

Исходное зашифрованное сообщение: „„tќ,нoя

Ключ: qwertyi

Исходный блок бит... Блок № 0:

10000100 10000100 01110100 10011101 00101100 11101101 01101111 11111111

Ключ из 56 бит:

0111000__1011101__1101100__1010111__0010011__1010001__1110010__1101001__

Ключ из 64 бита, после добавления бит четности:

01110001 10111011 11011000 10101111 00100111 10100011 11100100 11010010

**********************ДеШИФРОВАНИЕ**********************

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

11100100 10001100 11111111 11101000 10101011 11110100 11111000 11000000

HPart:

11100100 10001100 11111111 11101000

LPart:

10101011 11110100 11111000 11000000

Ключ 64 бита. С битами четности:

01110001 10111011 11011000 10101111 00100111 10100011 11100100 11010010

ключ (56). Перестановка РС1:

11101110 11000101 01111011 10001011 10100101 10000000 11100111

ключ (28C (Left)):

1110 1110 1100 0101 0111 1011 1000

ключ (28D (Right)):

1011 1010 0101 1000 0000 1110 0111

-----------------Итерация №16-----------------

Ключ из 56 бит после циклического сдвига, итерация 16:

1110111011000101011110111000 1011101001011000000011100111

Ключ из 48 бит. Перестановка РС2:

10011110 01111100 00110101 10100101 10100101 00001011

LPart, Началась функция модификации f:

10101011 11110100 11111000 11000000

Перевели 32 в 48. результат функции расширения Е:

01010101 01111111 10101001 01111111 00010110 00000001

Xor. побитово суммируем по модулю 2:

11001011 00000011 10011100 11011010 10110011 00001010

Преобразовали 48 в 32. С помощью узлов замены:

11000101 01010100 01010101 10001111

Перестановка бит в конце функции. Перестановка P:

00101100 10000111 11111000 00111001

HPart после модификации. HPart XOR f(LPart,Key):

11001000 00001011 00000111 11010001

После обмена HPart:

10101011 11110100 11111000 11000000

После обмена LPart:

11001000 00001011 00000111 11010001

-----------------Итерация №1-----------------

Ключ из 56 бит после циклического сдвига, итерация 1:

1101110110001010111101110001 0111010010110000000111001111

Ключ из 48 бит. Перестановка РС2:

01011101 11001101 01000111 00110111 00010111 11001001

LPart, Началась функция модификации f:

00000000 01100000 00100010 11101100

Перевели 32 в 48. результат функции расширения Е:

00000000 00000011 00000000 00010000 01010111 01011000

Xor. побитово суммируем по модулю 2:

01011101 11001110 01000111 00100111 01000000 10010001

Преобразовали 48 в 32. С помощью узлов замены:

10110101 10110101 01000100 10111100

Перестановка бит в конце функции. Перестановка P:

10001110 10000100 01010111 00111111

HPart после модификации. HPart XOR f(LPart,Key):

00000000 11011110 10001110 11101100

Результат дешифрования блока. Конечная перестановка IP-1:

00000000 00011100 00010111 00010111 00010000 00101011 00110011 00010111

Результат дешифрования XOR начальный вектор:

01010011 01101000 01110110 01100101 01100100 01101111 01110110 01000100

После дешифрования получили сообщение: ShvedovD

Соседние файлы в папке Архив1