Лабораторная работа: Алгоритм формирования ключей в процессе функционирования DES
C16 : 0011111111111111110000000000
D16 : 0111010110010110000111001101
4 шаг. Перестановка битов ключа с использованием таблицы PC1
До финальной перестановки битов ключей, необходимо слияние каждой пары данных. После того, как для каждого битового блока Cn Dn , где 1<=n <=16 осуществиться соответствующая перестановка по таблице (см ниже), формируя ключи. Только 48 бит каждой объединенной пары сохраняется в перестановленном ключе.
14 | 17 | 11 | 24 | 1 | 5 |
3 | 28 | 15 | 6 | 21 | 10 |
23 | 19 | 12 | 4 | 26 | 8 |
16 | 7 | 27 | 20 | 13 | 2 |
41 | 52 | 31 | 37 | 47 | 55 |
30 | 40 | 51 | 45 | 33 | 48 |
44 | 49 | 39 | 56 | 34 | 53 |
46 | 42 | 50 | 36 | 29 | 32 |
Все подключи:
K 1 : 111001111101001101110010001100110001010011011101
K 2 : 111001101101001101110011111011100011011001010110
K 3 : 101011111101001111011011001111011110001011101010
K 4 : 001111100101001111011011011101001101110001000011
K 5 : 001111100101100111011001100011101010010001111110
K 6 : 000111110110100111011101101010011111111011000000
K 7 : 000111100110110110011101011111001100011000110011
K 8 : 010111100010110110101101100111110100110001001110
K 9 : 010110111010110110101101010001010001111010110110
K 10 : 110110001010110010101111110110010010100011111001
K 11 : 111100001010111010100110001000111101101000011101
K 12 : 111100011011111000100110000101110011010010110110
K 13 : 111000011011011001110110111010010000100011100101
K 14 : 111001001101011001110110010001101110101010011111
K 15 : 111001111101001101110010001100110001010011011101
K 16 : 111001101101001101110011111011100011011001010110
Исходный код
#include <stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int main (int argc, char *argv[]) {
int
i, b, y, r, j, v, p, m, l, f, u, k, a, s, q, D[100] [100], Y[100] [100], U[100] [100], X[1000] [1000], E[100] [100], G[100] [100], W[100] [100], P[100] [1 $
double z;
int key[16]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};