ä¸ï¼å å¯
DESç®æ³å¤ççæ°æ®å¯¹è±¡æ¯ä¸ç»64æ¯ç¹çææ串ã设该ææ串为m=m1m2â¦m64 (mi=0æ1)ãææ串ç»è¿64æ¯ç¹çå¯é¥Kæ¥å å¯ï¼æåçæé¿åº¦ä¸º64æ¯ç¹çå¯æEãå
¶å å¯è¿ç¨å¾ç¤ºå¦ä¸ï¼
DESç®æ³å å¯è¿ç¨
对DESç®æ³å å¯è¿ç¨å¾ç¤ºç说æå¦ä¸ï¼å¾
å å¯ç64æ¯ç¹ææ串mï¼ç»è¿IPç½®æ¢åï¼å¾å°çæ¯ç¹ä¸²çä¸æ å表å¦ä¸ï¼
IP 58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
该æ¯ç¹ä¸²è¢«å为32ä½çL0å32ä½çR0两é¨åãR0åå¯é¥K1(åå¯é¥ççæå°å¨åé¢è®²)ç»è¿åæ¢f(R0,K1)ï¼fåæ¢å°å¨ä¸é¢è®²ï¼è¾åº32ä½çæ¯ç¹ä¸²f1,f1ä¸L0åä¸è¿ä½çäºè¿å¶å æ³è¿ç®ãè¿ç®è§å为ï¼
f1ä¸L0åä¸è¿ä½çäºè¿å¶å æ³è¿ç®åçç»æèµç»R1ï¼R0ååå°ä¸å¨çèµç»L1ãL1ä¸R0ååä¸ä»¥ä¸å®å
¨ç¸åçè¿ç®ï¼çæL2ï¼R2â¦â¦ ä¸å
±ç»è¿16次è¿ç®ãæåçæR16åL16ãå
¶ä¸R16为L15ä¸f(R15,K16)åä¸è¿ä½äºè¿å¶å æ³è¿ç®çç»æï¼L16æ¯R15çç´æ¥èµå¼ã
R16ä¸L16å并æ64ä½çæ¯ç¹ä¸²ãå¼å¾æ³¨æçæ¯R16ä¸å®è¦æå¨L16åé¢ãR16ä¸L16å并åæçæ¯ç¹ä¸²ï¼ç»è¿ç½®æ¢IP-1åæå¾æ¯ç¹ä¸²çä¸æ å表å¦ä¸ï¼
IP-1 40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
ç»è¿ç½®æ¢IP-1åçæçæ¯ç¹ä¸²å°±æ¯å¯æe.ã
ä¸é¢å讲ä¸ä¸åæ¢f(Ri-1,Ki)ã
å®çåè½æ¯å°32æ¯ç¹çè¾å
¥å转å为32æ¯ç¹çè¾åºãå
¶è¿ç¨å¦å¾æ示ï¼
对fåæ¢è¯´æå¦ä¸ï¼è¾å
¥Ri-1(32æ¯ç¹)ç»è¿åæ¢Eåï¼è¨è为48æ¯ç¹ãè¨èåçæ¯ç¹ä¸²çä¸æ å表å¦ä¸ï¼
E: 32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 31
è¨èåçæ¯ç¹ä¸²å为8ç»ï¼æ¯ç»6æ¯ç¹ãåç»ç»è¿åèªçSçåï¼åå为4æ¯ç¹(å
·ä½è¿ç¨è§å)ï¼å并ååæ为32æ¯ç¹ã该32æ¯ç¹ç»è¿Påæ¢åï¼å
¶ä¸æ å表å¦ä¸ï¼
P: 16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
ç»è¿Påæ¢åè¾åºçæ¯ç¹ä¸²ææ¯32æ¯ç¹çf (Ri-1,Ki)ã
ä¸é¢å讲ä¸ä¸Sççåæ¢è¿ç¨ãä»»åä¸Sçãè§å¾ï¼
å¨å
¶è¾å
¥b1,b2,b3,b4,b5,b6ä¸ï¼è®¡ç®åºx=b1*2+b6, y=b5+b4*2+b3*4+b2*8ï¼åä»Si表ä¸æ¥åºx è¡ï¼y åçå¼Sxyãå°Sxyå为äºè¿å¶ï¼å³å¾Siççè¾åºãï¼S表å¦å¾æ示ï¼
è³æ¤ï¼DESç®æ³å å¯åç讲å®äºãå¨VC++6.0ä¸çç¨åºæºä»£ç 为ï¼
for(i=1;i<=64;i++)
m1[i]=m[ip[i-1]];//64ä½ææ串è¾å
¥ï¼ç»è¿IPç½®æ¢ã
ä¸é¢è¿è¡è¿ä»£ãç±äºå次è¿ä»£çæ¹æ³ç¸ååªæ¯è¾å
¥è¾åºä¸åï¼å æ¤åªç»åºå
¶ä¸ä¸æ¬¡ã以第å
«æ¬¡ä¸ºä¾ï¼//è¿è¡ç¬¬å
«æ¬¡è¿ä»£ãé¦å
è¿è¡Sççè¿ç®ï¼è¾å
¥32ä½æ¯ç¹ä¸²ã
for(i=1;i<=48;i++)//ç»è¿Eåæ¢æ©å
ï¼ç±32ä½å为48ä½
RE1[i]=R7[E[i-1]];
for(i=1;i<=48;i++)//ä¸K8æä½ä½ä¸è¿ä½å æ³è¿ç®
RE1[i]=RE1[i]+K8[i];
for(i=1;i<=48;i++)
{
if(RE1[i]==2)
RE1[i]=0;
}
for(i=1;i<7;i++)//48ä½åæ8ç»
{
s11[i]=RE1[i];
s21[i]=RE1[i+6];
s31[i]=RE1[i+12];
s41[i]=RE1[i+18];
s51[i]=RE1[i+24];
s61[i]=RE1[i+30];
s71[i]=RE1[i+36];
s81[i]=RE1[i+42];
}//ä¸é¢ç»è¿Sçï¼å¾å°8个æ°ãS1,s2,s3,s4,s5,s6,s7,s8åå«ä¸ºS表
s[1]=s1[s11[6]+s11[1]*2][s11[5]+s11[4]*2+s11[3]*4+s11[2]*8];
s[2]=s2[s21[6]+s21[1]*2][s21[5]+s21[4]*2+s21[3]*4+s21[2]*8];
s[3]=s3[s31[6]+s31[1]*2][s31[5]+s31[4]*2+s31[3]*4+s31[2]*8];
s[4]=s4[s41[6]+s41[1]*2][s41[5]+s41[4]*2+s41[3]*4+s41[2]*8];
s[5]=s5[s51[6]+s51[1]*2][s51[5]+s51[4]*2+s51[3]*4+s51[2]*8];
s[6]=s6[s61[6]+s61[1]*2][s61[5]+s61[4]*2+s61[3]*4+s61[2]*8];
s[7]=s7[s71[6]+s71[1]*2][s71[5]+s71[4]*2+s71[3]*4+s71[2]*8];
s[8]=s8[s81[6]+s81[1]*2][s81[5]+s81[4]*2+s81[3]*4+s81[2]*8];
for(i=0;i<8;i++)//8个æ°åæ¢è¾åºäºè¿å¶
{
for(j=1;j<5;j++)
{
temp[j]=s[i+1]%2;
s[i+1]=s[i+1]/2;
}
for(j=1;j<5;j++)
f[4*i+j]=temp[5-j];
}
for(i=1;i<33;i++)//ç»è¿Påæ¢
frk[i]=f[P[i-1]];//Sçè¿ç®å®æ
for(i=1;i<33;i++)//å·¦å³äº¤æ¢
L8[i]=R7[i];
for(i=1;i<33;i++)//R8为L7ä¸f(R,K)è¿è¡ä¸è¿ä½äºè¿å¶å æ³è¿ç®ç»æ
{
R8[i]=L7[i]+frk[i];
if(R8[i]==2)
R8[i]=0;
}
[ ååææ¡£ æ¬æéåä¸çº§è¯»è
å·²é
读21783次 ] ææ¡£ 代ç å·¥å
·
DESç®æ³åå
¶å¨VC++6.0ä¸çå®ç°(ä¸)
ä½è
ï¼èªå¤©å»å¦å·¥ç¨ç 究æå室 æ±å½¦å
å¨ãDESç®æ³åå
¶å¨VC++6.0ä¸çå®ç°(ä¸)ãä¸ä¸»è¦ä»ç»äºDESç®æ³çåºæ¬åçï¼ä¸é¢è®©æ们继ç»ï¼
äºï¼åå¯é¥ççæ
64æ¯ç¹çå¯é¥çæ16个48æ¯ç¹çåå¯é¥ãå
¶çæè¿ç¨è§å¾ï¼
åå¯é¥çæè¿ç¨å
·ä½è§£éå¦ä¸ï¼
64æ¯ç¹çå¯é¥Kï¼ç»è¿PC-1åï¼çæ56æ¯ç¹ç串ãå
¶ä¸æ å¦è¡¨æ示ï¼
PC-1 57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
该æ¯ç¹ä¸²å为é¿åº¦ç¸ççæ¯ç¹ä¸²C0åD0ãç¶åC0åD0åå«å¾ªç¯å·¦ç§»1ä½ï¼å¾å°C1åD1ãC1åD1å并起æ¥çæC1D1ãC1D1ç»è¿PC-2åæ¢åå³çæ48æ¯ç¹çK1ãK1çä¸æ å表为ï¼
PC-2 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
C1ãD1åå«å¾ªç¯å·¦ç§»LS2ä½ï¼åå并ï¼ç»è¿PC-2ï¼çæåå¯é¥K2â¦â¦ä¾æ¬¡ç±»æ¨ç´è³çæåå¯é¥K16ã
注æï¼Lsi (I =1,2,â¦.16)çæ°å¼æ¯ä¸åçãå
·ä½è§ä¸è¡¨ï¼
è¿ä»£é¡ºåº 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
左移ä½æ° 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
çæåå¯é¥çVCç¨åºæºä»£ç å¦ä¸ï¼
for(i=1;i<57;i++)//è¾å
¥64ä½Kï¼ç»è¿PC-1å为56ä½ k0[i]=k[PC_1[i-1]];
56ä½çK0ï¼åå为28ä½çC0ï¼D0ãC0ï¼D0çæK1åC1ï¼D1ã以ä¸å 次è¿ä»£æ¹æ³ç¸åï¼ä»
以çæK8为ä¾ã for(i=1;i<27;i++)//循ç¯å·¦ç§»ä¸¤ä½
{
C8[i]=C7[i+2];
D8[i]=D7[i+2];
}
C8[27]=C7[1];
D8[27]=D7[1];
C8[28]=C7[2];
D8[28]=D7[2];
for(i=1;i<=28;i++)
{
C[i]=C8[i];
C[i+28]=D8[i];
}
for(i=1;i<=48;i++)
K8[i]=C[PC_2[i-1]];//çæåå¯é¥k8
注æï¼çæçåå¯é¥ä¸åï¼æé循ç¯å·¦ç§»çä½æ°ä¹ä¸åãæºç¨åºä¸ä»¥çæåå¯é¥ K8为ä¾ï¼æ以循ç¯å·¦ç§»äºä¸¤ä½ãä½å¨ç¼ç¨ä¸ï¼çæä¸åçåå¯é¥åºä»¥Lsi表为åã
ä¸ï¼è§£å¯
DESç解å¯è¿ç¨åDESçå å¯è¿ç¨å®å
¨ç±»ä¼¼ï¼åªä¸è¿å°16åçåå¯é¥åºåK1ï¼K2â¦â¦K16ç顺åºåè¿æ¥ãå³ç¬¬ä¸åç¨ç¬¬16个åå¯é¥K16ï¼ç¬¬äºåç¨K15ï¼å
¶ä½ç±»æ¨ã
第ä¸åï¼
å å¯åçç»æ
L=R15, R=L15âf(R15,K16)âf(R15,K16)=L15
åçR15=L14âf(R14,K15), L15=R14ã
åçç±»æ¨ï¼
å¾ L=R0, R=L0ã
å
¶ç¨åºæºä»£ç ä¸å å¯ç¸åãå¨æ¤å°±ä¸éåã
åï¼ç¤ºä¾
ä¾å¦ï¼å·²ç¥ææm=learning, å¯é¥ k=computerã
ææmçASCIIäºè¿å¶è¡¨ç¤ºï¼
m= 01101100 01100101 01100001 01110010
01101110 01101001 01101110 01100111
å¯é¥kçASCIIäºè¿å¶è¡¨ç¤ºï¼
k=01100011 01101111 01101101 01110000
01110101 01110100 01100101 01110010
ææmç»è¿IPç½®æ¢åï¼å¾ï¼
11111111 00001000 11010011 10100110 00000000 11111111 01110001 11011000
çå为左å³ä¸¤æ®µï¼
L0=11111111 00001000 11010011 10100110 R0=00000000 11111111 01110001 11011000
ç»è¿16次è¿ä»£åï¼æå¾ç»æ为ï¼
L1=00000000 11111111 01110001 11011000 R1=00110101 00110001 00111011 10100101
L2=00110101 00110001 00111011 10100101 R2=00010111 11100010 10111010 10000111
L3=00010111 11100010 10111010 10000111 R3=00111110 10110001 00001011 10000100
L4=00111110101100010000101110000100 R4=11110111110101111111101000111110
L5=11110111110101111111101000111110 R5=10010110011001110100111111100101
L6=10010110011001110100111111100101 R6=11001011001010000101110110100111
L7=11001011001010000101110110100111 R7=01100011110011101000111011011001
L8=01100011110011101000111011011001 R8=01001011110100001111001000000100
L9=01001011110100001111001000000100 R9=00011101001101111010111011100001
L10=00011101001101111010111011100001 R10=11101110111110111111010100000101
L11=11101110111110111111010100000101 R11=01101101111011011110010111111000
L12=01101101111011011110010111111000 R12=11111101110011100111000110110111
L13=11111101110011100111000110110111 R13=11100111111001011010101000000100
L14=11100111111001011010101000000100 R14=00011110010010011011100001100001
L15=00011110010010011011100001100001 R15=01010000111001001101110110100011
L16=01010000111001001101110110100011 R16=01111101101010000100110001100001
å
¶ä¸ï¼få½æ°çç»æ为ï¼
f1=11001010001110011110100000000011 f2=00010111000111011100101101011111
f3=00001011100000000011000000100001 f4=11100000001101010100000010111001
f5=10101000110101100100010001100001 f6=00111100111111111010011110011001
f7=11110101101010011100000100111100 f8=10000000111110001010111110100011
f9=01111110111110010010000000111000 f10=10100101001010110000011100000001
f11=01110000110110100100101100011001 f12=00010011001101011000010010110010
f13=10001010000010000100111111111100 f14=11100011100001111100100111010110
f15=10110111000000010111011110100111 f16=01100011111000011111010000000000
16个åå¯é¥ä¸ºï¼
K1=11110000101111101110111011010000 K2=11100000101111101111011010010101
K3=11110100111111100111011000101000 K4=11100110111101110111001000011010
K5=11101110110101110111011100100110 K6=11101111110100110101101110001011
K7=00101111110100111111101111100110 K8=10111111010110011101101101010000
K9=00011111010110111101101101000100 K10=00111111011110011101110100001001
K11=00011111011011011100110101101000 K12=01011011011011011011110100001010
K13=11011101101011011010110110001111 K14=11010011101011101010111110000000
K15=11111001101111101010011011010011 K16=11110001101111100010111000000001
Sçä¸ï¼16次è¿ç®æ¶ï¼æ¯æ¬¡ç8 个ç»æ为ï¼
第ä¸æ¬¡ï¼5ï¼11ï¼4ï¼1ï¼0ï¼3ï¼13ï¼9ï¼
第äºæ¬¡ï¼7ï¼13ï¼15ï¼8ï¼12ï¼12ï¼13ï¼1ï¼
第ä¸æ¬¡ï¼8ï¼0ï¼0ï¼4ï¼8ï¼1ï¼9ï¼12ï¼
第å次ï¼0ï¼7ï¼4ï¼1ï¼7ï¼6ï¼12ï¼4ï¼
第äºæ¬¡ï¼8ï¼1ï¼0ï¼11ï¼5ï¼0ï¼14ï¼14ï¼
第å
次ï¼14ï¼12ï¼13ï¼2ï¼7ï¼15ï¼14ï¼10ï¼
第ä¸æ¬¡ï¼12ï¼15ï¼15ï¼1ï¼9ï¼14ï¼0ï¼4ï¼
第å
«æ¬¡ï¼15ï¼8ï¼8ï¼3ï¼2ï¼3ï¼14ï¼5ï¼
第ä¹æ¬¡ï¼8ï¼14ï¼5ï¼2ï¼1ï¼15ï¼5ï¼12ï¼
第å次ï¼2ï¼8ï¼13ï¼1ï¼9ï¼2ï¼10ï¼2ï¼
第åä¸æ¬¡ï¼10ï¼15ï¼8ï¼2ï¼1ï¼12ï¼12ï¼3ï¼
第åäºæ¬¡ï¼5ï¼4ï¼4ï¼0ï¼14ï¼10ï¼7ï¼4ï¼
第åä¸æ¬¡ï¼2ï¼13ï¼10ï¼9ï¼2ï¼4ï¼3ï¼13ï¼
第åå次ï¼13ï¼7ï¼14ï¼9ï¼15ï¼0ï¼1ï¼3ï¼
第åäºæ¬¡ï¼3ï¼1ï¼15ï¼5ï¼11ï¼9ï¼11ï¼4ï¼
第åå
次ï¼12ï¼3ï¼4ï¼6ï¼9ï¼3ï¼3ï¼0ï¼
åå¯é¥çæè¿ç¨ä¸ï¼çæçæ°å¼ä¸ºï¼
C0=0000000011111111111111111011 D0=1000001101110110000001101000
C1=0000000111111111111111110110 D1=0000011011101100000011010001
C2=0000001111111111111111101100 D2=0000110111011000000110100010
C3=0000111111111111111110110000 D3=0011011101100000011010001000
C4=0011111111111111111011000000 D4=1101110110000001101000100000
C5=1111111111111111101100000000 D5=0111011000000110100010000011
C6=1111111111111110110000000011 D6=1101100000011010001000001101
C7=1111111111111011000000001111 D7=0110000001101000100000110111
C8=1111111111101100000000111111 D8=1000000110100010000011011101
C9=1111111111011000000001111111 D9=0000001101000100000110111011
C10=1111111101100000000111111111 D10=0000110100010000011011101100
C11=1111110110000000011111111111 D11=0011010001000001101110110000
C12=1111011000000001111111111111 D12=1101000100000110111011000000
C13=1101100000000111111111111111 D13=0100010000011011101100000011
C14=0110000000011111111111111111 D14=0001000001101110110000001101
C15=1000000001111111111111111101 D15=0100000110111011000000110100
C16=0000000011111111111111111011 D16=1000001101110110000001101000
温馨提示:答案为网友推荐,仅供参考