Реферат Курсовая Конспект
Исходный код - раздел Программирование, Алгоритм формирования ключей в процессе функционирования DES Исходный Код. Include <stdio.h> #include<math.h> #include<stri...
|
Исходный код. 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 }; char A[1000]; char B[200]; char N[200]; char T[200]; char C[1000]; char Z[43]; char R[43]; char L[43]; char *str2; char *str; char *str1; char *str3; char *str4; char *str5; char d[100]; printf (« Vvedite key »); str=(char *) (malloc(1000)); for (i=0; i<1000; i++) { scanf («%c»,&str[i]); if (str[i]==(char) 10) { m=i; break; } if (str[i]==(char) 32) { str[i]=157;} } if (m!=8) { printf (« Key neveren »); } for (i=0; i<m; i++) { A[i]=str[i];} for (i=0; i<m; i++) { B[i]=(int) A[i]; printf («%d », B[i]); } for (i=0; i<m; i++) { f=B[i]; for (j=0; j<8; j++) { if (f<1) { X[j] [i]=0; goto Metka;} s=f/2; /*printf («%d», s);*/ z=fmod (f, 2); if (z!=0) X[j] [i]=1; else X[j] [i]=0; f=s; Metka:printf («%d», X[j] [i]);} printf (« »); } printf (« »); k=0; for (i=0; i<m; i++) { k=i*8; for (j=0; j<8; j++) { N [j+k]=X [8-j-1] [i]; } } for (i=0; i<64; i++) { printf («%d», N[i]);} printf (« »); C[0]=N[57]; C[1]=N[49]; C[2]=N[41]; C[3]=N[33]; C[4]=N[25]; C[5]=N[17]; C[6]=N[9]; C[7]=N[1]; C[8]=N[58]; C[9]=N[50]; C[10]=N[42]; C[11]=N[34]; C[12]=N[26]; C[13]=N[18]; C[14]=N[10]; C[15]=N[2]; C[16]=N[59]; C[17]=N[51]; C[18]=N[43]; C[19]=N[35]; C[20]=N[27]; C[21]=N[19]; C[22]=N[11]; C[23]=N[3]; C[24]=N[60]; C[25]=N[52]; C[26]=N[44]; C[27]=N[36]; C[28]=N[63]; C[29]=N[55]; C[30]=N[47]; C[31]=N[39]; C[32]=N[31]; C[33]=N[23]; C[34]=N[15]; C[35]=N[7]; C[36]=N[62]; C[37]=N[54]; C[38]=N[46]; C[39]=N[38]; C[40]=N[30]; C[41]=N[22]; C[42]=N[14]; C[43]=N[6]; C[44]=N[61]; C[45]=N[53]; C[46]=N[45]; C[47]=N[37]; C[48]=N[29]; C[49]=N[21]; C[50]=N[13]; C[51]=N[5]; C[52]=N[28]; C[53]=N[20]; C[54]=N[12]; C[55]=N[4]; for (i=0; i<56; i++) { printf («%d», C[i]); } for (i=0; i<56; i++) { if (i<28) { Z[i]=C[i];} if (i>27) { R [i-28]=C[i];} } printf (« »); for (i=0; i<28; i++) { printf («%d», Z[i]);} printf (« »); for (i=0; i<28; i++) { printf («%d», R[i]);} printf (« »); printf (« »); for (j=0; j<16; j++) { v=key[j]; for (i=0; i<28; i++) { if (v==2) { Y[26] [j]=Z[0]; Y[27] [j]=Z[1]; U[26] [j]=R[0]; U[27] [j]=R[1]; } if (v==1) { Y[27] [j]=Z[1]; U[27] [j]=R[1]; } if (i<(28-v)) { Y[i] [j]=Z [i+v]; U[i] [j]=R [i+v];} Z[i]=Y[i] [j]; R[i]=U[i] [j]; /*printf («%d», U[i] [j]);*/ } /*printf (« »);*/ } for (j=0; j<16; j++) { for (i=0; i<56; i++) { if (i<28) { W[i] [j]=Y[i] [j];} if (i>27) { W[i] [j]=U [i-28] [j];} printf («%d», W[i] [j]); } printf (« »); } for (j=0; j<16; j++) { P[0] [j]=W[14] [j]; P[1] [j]=W[17] [j]; P[2] [j]=W[11] [j]; P[3] [j]=W[24] [j]; P[4] [j]=W[1] [j]; P[5] [j]=W[5] [j]; P[6] [j]=W[3] [j]; P[7] [j]=W[28] [j]; P[8] [j]=W[15] [j]; P[9] [j]=W[6] [j]; P[10] [j]=W[21] [j]; P[11] [j]=W[10] [j]; P[12] [j]=W[23] [j]; P[13] [j]=W[19] [j]; P[14] [j]=W[12] [j]; P[15] [j]=W[4] [j]; P[16] [j]=W[26] [j]; P[17] [j]=W[8] [j]; P[18] [j]=W[16] [j]; P[19] [j]=W[7] [j]; P[20] [j]=W[27] [j]; P[21] [j]=W[20] [j]; P[22] [j]=W[13] [j]; P[23] [j]=W[2] [j]; P[24] [j]=W[41] [j]; P[25] [j]=W[52] [j]; P[26] [j]=W[31] [j]; P[27] [j]=W[37] [j]; P[28] [j]=W[47] [j]; P[29] [j]=W[55] [j]; P[30] [j]=W[30] [j]; P[31] [j]=W[40] [j]; P[32] [j]=W[51] [j]; P[33] [j]=W[45] [j]; P[34] [j]=W[33] [j]; P[35] [j]=W[48] [j]; P[36] [j]=W[44] [j]; P[37] [j]=W[49] [j]; P[38] [j]=W[39] [j]; P[39] [j]=W[56] [j]; P[40] [j]=W[34] [j]; P[41] [j]=W[53] [j]; P[42] [j]=W[46] [j]; P[43] [j]=W[42] [j]; P[44] [j]=W[50] [j]; P[45] [j]=W[36] [j]; P[46] [j]=W[29] [j]; P[47] [j]=W[32] [j]; } for (j=0; j<16; j++) { for (i=0; i<48; i++) { printf («%d», P[i] [j]); } printf (« »); } }
– Конец работы –
Эта тема принадлежит разделу:
Входные данные: Ключ состоит из 8 символов или 8 байт. Соответственно ключ имеет размер 64 байта. Но размер ключа используется только для записи (для организации данных).… Например, последовательность C(3) получается, посредством сдвига влево на две позиции последовательности C(2), а…
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Исходный код
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов