Blowfish (Дешифрование)
Входные данные:
fe b2 6d 97
Левая часть шифра L[0] = 1111111010110010
Подключ Р6 = 0101011010001110
Новая правая часть R[1] = 1010100000111100
S[1][10] = 1001100001101010
S[2][8] = 0101100111100111
S[3][3] = 1101000011100000
S[4][12] = 0001101001001011
Выход функции F[R1] = 0011110011111100
Правая часть данных [R0] = 0110110110010111
Новая левая часть данных L[1] = 0101000101101011
Подключ Р5 = 1101101101100010
Новая правая часть R[2] = 1000101000001001
S[1][8] = 0101111010000010
S[2][10] = 0100110110110101
S[3][0] = 0101100010000010
S[4][9] = 1100000110010000
Выход функции F[R2] = 1011011001000101
Правая часть данных [R1] = 1010100000111100
Новая левая часть данных L[2] = 0001111001111001
Подключ Р4 = 1100110011000010
Новая правая часть R[3] = 1101001010111011
S[1][13] = 1101111011010101
S[2][2] = 0101110001100000
S[3][11] = 0110010111111001
S[4][11] = 1110110100100111
Выход функции F[R3] = 0100101111110011
Правая часть данных [R2] = 1000101000001001
Новая левая часть данных L[3] = 1100000111111010
Подключ Р[3] = 1100110001010101
Новая левая часть данных L[4] = 0000110110101111
S[1][0] = 0100000100011100
S[2][13] = 1110100011010111
S[3][10] = 1111000001110111
S[4][15] = 1110011001000001
Выход функции F[L4] = 1011111111000101
Правая часть данных [R3] = 1101001010111011
Новая правая часть данных [R4] = 0110110101111110
Подключ Р[2] = 1000110111010000
Правая часть расшифровки = 1110000010101110
Левая часть данных L[4] = 0000110110101111
Подключ Р[1] = 1001111100000001
Левая часть расшифровки = 1001001010101110
Результат в 16-ричной форме:
92 ae e0 ae
Iceberg (Шифрование)
Входные данные:
8c ae ad a5
Блок данных = 10001100 10101110 10101101 10100101
Ключ:
80 ab aa a8 a2 a8 a0 a4
Ключ = 10000000 10101011 10101010 10101000 10100010 10101000 10100000 10100100
Генерация подключей:
1. Вращение влево на 3 бита (в коде 16)
0 5 5 d 5 5 4 5 1 5 4 5 0 5 2 4
0000 0101 0101 1101 0101 0101 0100 0101 0001 0101 0100 0101 0000 0101 0010 0100
2. Битовая перестановка P64 (в коде 16)
0 b 0 9 0 8 0 9 5 a 5 c 4 d 6 9
0000 1011 0000 1001 0000 1000 0000 1001 0101 1010 0101 1100 0100 1101 0110 1001
3. Замена S0 (в коде 16)
d e d 4 d f d 4 a 5 a 6 9 0 c 4
1101 1110 1101 0100 1101 1111 1101 0100 1010 0101 1010 0110 1001 0000 1100 0100
4. Битовая перестановка P64 (в коде 16)
c a 8 2 1 c 9 e 7 e 9 8 f 2 d b
1100 1010 1000 0010 0001 1100 1001 1110 0111 1110 1001 1000 1111 0010 1101 1011
5. Вращение влево на 3 бита (промежуточный подключ IK1)
5 4 1 0 e 4 f 3 f 4 c 7 9 6 d e
0101 0100 0001 0000 1110 0100 1111 0011 1111 0100 1100 0111 1001 0110 1101 1110
1. Вращение влево на 3 бита (в коде 16)
a 0 8 7 2 7 9 f a 6 3 c b 6 f 2
1010 0000 1000 0111 0010 0111 1001 1111 1010 0110 0011 1100 1011 0110 1111 0010
2. Битовая перестановка P64 (в коде 16)
f b c 3 f a 8 0 f 1 a 2 7 1 a 6
1111 1011 1100 0011 1111 1010 1000 0000 1111 0001 1010 0010 0111 0001 1010 0110
3. Замена S0 (в коде 16)
8 e 6 2 8 5 f d 8 7 5 3 1 7 5 c
1000 1110 0110 0010 1000 0101 1111 1101 1000 0111 0101 0011 0001 0111 0101 1100
4. Битовая перестановка P64 (в коде 16)
d b f 8 1 e 2 f 4 b 1 2 3 b 0 5
1101 1011 1111 1000 0001 1110 0010 1111 0100 1011 0001 0010 0011 1011 0000 0101
5. Вращение влево на 3 бита (промежуточный подключ IK1)
d f c 0 f 1 7 a 5 8 9 1 d 8 2 e
1101 1111 1100 0000 1111 0001 0111 1010 0101 1000 1001 0001 1101 1000 0010 1110
6. Подключ IK1’ (в коде 16)
0 0 c d c 9 9 b
0000 0000 1100 1101 1100 1001 1001 1011
6. Подключ IK2’ (в коде 16)
b 8 c 7 2 8 a 7
1011 1000 1100 0111 0010 1000 1010 0111
7. Раундовый ключ RK1’ (в коде 16)
0 0 b 6 b 1 1 2
0000 0000 1011 0110 1011 0001 0001 0010
7. Раундовый ключ RK2’ (в коде 16)
e c 8 6 3 c f 6
1110 1100 1000 0110 0011 1100 1111 0110
Шифрование данных
Раунд1
Данные: 8 c a e a d a 5
-----(код 2) 1000 1100 1010 1110 1010 1101 1010 0101
1.1. Замена S0 для данных (код 16): f 6 5 b 5 0 5 a
-----(код 2) 1111 0110 0101 1011 0101 0000 0101 1010
1.2. Битовая перестановка P8 (код 16): de 67 44 66
-----(код 2) 11011110 01100111 01000100 01100110
1.3. Замена S1 (код 16): 5 8 9 b 0 0 9 9
-----(код 2) 0101 1000 1001 1011 0000 0000 1001 1001
1.4. Битовая перестановка P8 (код 16): 64 a7 0 a5
-----(код 2) 01100100 10100111 00000000 10100101
1.5. Замена S0 (код 16): c 9 5 1 d d 5 a
-----(код 2) 1100 1001 0101 0001 1101 1101 0101 1010
1.6. Битовая перестановка P32 (код 16): f 4 9 e 1 2 2 f
-----(код 2): 11110100100111100001001000101111
1.7. Замена S1 (код 16): 2 0 6 8 a f f 2
-----(код 2) 0010 0000 0110 1000 1010 1111 1111 0010
1.8. Сложение ^ п.1.7 и раундового ключа RK1 (код 16):
2 0 d e 1 e e 0
-----(код 2) 0010 0000 1101 1110 0001 1110 1110 0000
1.9. Битовая перестановка P4 (в коде 16): 1 0 e d 2 d d 0
-----(код 2) 0001 0000 1110 1101 0010 1101 1101 0000
1.10. Битовая перестановка P32 – результат шифрования первого раунда
3 e 8 6 2 5 c 4
-----(код 2) 00111110100001100010010111000100
Раунд2
2.1. Замена S0 для данных (код 16): 2 b f c 3 a 6 9
-----(код 2) 0010 1011 1111 1100 0011 1010 0110 1001
2.2. Битовая перестановка P8 (код 16): 2b fc 2e 69
-----(код 2) 00101011 11111100 00101110 01101001
2.3. Замена S1 (код 16): f 7 2 3 f 8 9 6
-----(код 2) 1111 0111 0010 0011 1111 1000 1001 0110
2.4. Битовая перестановка P8 (код 16): df b ec 96
-----(код 2) 11011111 00001011 11101100 10010110
2.5. Замена S0 (код 16): 0 8 d e b 6 4 c
-----(код 2) 0000 1000 1101 1110 1011 0110 0100 1100
2.6. Битовая перестановка P32 (код 16): 9 8 5 f 4 5 a 8
-----(код 2): 10011000010111110100010110101000
2.7. Замена S1 (код 16): 6 e d 2 0 d 1 e
-----(код 2) 0110 1110 1101 0010 0000 1101 0001 1110
2.8. Сложение ^ п.2.7 и раундового ключа RK2 (код 16):
8 2 5 4 3 1 e 8
-----(код 2) 1000 0010 0101 0100 0011 0001 1110 1000
2.9. Битовая перестановка P4 (в коде 16): 4 1 a 8 3 2 d 4
-----(код 2) 0100 0001 1010 1000 0011 0010 1101 0100
2.10. Битовая перестановка P32 – результат шифрования
9 e 0 1 6 1 8 3
-----(код 2) 10011110000000010110000110000011
Результат шифрования:
9e 1 61 83