- •2012 Содержание
- •Задание на выполнение курсового проекта
- •1 Краткие сведения о стандарте шифрованияDes
- •2. Режим des-ecb.
- •2.1. Общая схема шифрования.
- •2.2. Исходный текст класса шифрования.
- •2.3. Пример шифрования и расшифрования
- •3. Режим des-cbc
- •3.1. Общая схема шифрования
- •3.2. Исходный текст процедуры шифрования и дешифрования
- •3.3. Пример шифрования и расшифрования
- •4. Режим тройной des
- •4.1. Общие схемы шифрования
- •4.2. Исходные тексты процедур шифрования и дешифрования
- •4.3. Пример шифрования и дешифрования методомTripleDesede3
- •5. Руководство пользователя программы
- •5.5.2 Использование программного средства
- •Класс TestWindow
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