?? des.c
字號:
case 8:
subkey=&subkey9;
break;
case 9:
subkey=&subkey10;
break;
case 10:
subkey=&subkey11;
break;
case 11:
subkey=&subkey12;
break;
case 12:
subkey=&subkey13;
break;
case 13:
subkey=&subkey14;
break;
case 14:
subkey=&subkey15;
break;
case 15:
subkey=&subkey16;
break;
}
/*XOR operation with 48-bit subkey*/
EPbuffer.k0=(EPbuffer.k0)^(subkey->k0); EPbuffer.k1=(EPbuffer.k1)^(subkey->k1);
EPbuffer.k2=(EPbuffer.k2)^(subkey->k2); EPbuffer.k3=(EPbuffer.k3)^(subkey->k3);
EPbuffer.k4=(EPbuffer.k4)^(subkey->k4); EPbuffer.k5=(EPbuffer.k5)^(subkey->k5);
EPbuffer.k6=(EPbuffer.k6)^(subkey->k6); EPbuffer.k7=(EPbuffer.k7)^(subkey->k7);
EPbuffer.k8=(EPbuffer.k8)^(subkey->k8); EPbuffer.k9=(EPbuffer.k9)^(subkey->k9);
EPbuffer.k10=(EPbuffer.k10)^(subkey->k10); EPbuffer.k11=(EPbuffer.k11)^(subkey->k11);
EPbuffer.k12=(EPbuffer.k12)^(subkey->k12); EPbuffer.k13=(EPbuffer.k13)^(subkey->k13);
EPbuffer.k14=(EPbuffer.k14)^(subkey->k14); EPbuffer.k15=(EPbuffer.k15)^(subkey->k15);
EPbuffer.k16=(EPbuffer.k16)^(subkey->k16); EPbuffer.k17=(EPbuffer.k17)^(subkey->k17);
EPbuffer.k18=(EPbuffer.k18)^(subkey->k18); EPbuffer.k19=(EPbuffer.k19)^(subkey->k19);
EPbuffer.k20=(EPbuffer.k20)^(subkey->k20); EPbuffer.k21=(EPbuffer.k21)^(subkey->k21);
EPbuffer.k22=(EPbuffer.k22)^(subkey->k22); EPbuffer.k23=(EPbuffer.k23)^(subkey->k23);
EPbuffer.k24=(EPbuffer.k24)^(subkey->k24); EPbuffer.k25=(EPbuffer.k25)^(subkey->k25);
EPbuffer.k26=(EPbuffer.k26)^(subkey->k26); EPbuffer.k27=(EPbuffer.k27)^(subkey->k27);
EPbuffer.k28=(EPbuffer.k28)^(subkey->k28); EPbuffer.k29=(EPbuffer.k29)^(subkey->k29);
EPbuffer.k30=(EPbuffer.k30)^(subkey->k30); EPbuffer.k31=(EPbuffer.k31)^(subkey->k31);
EPbuffer.k32=(EPbuffer.k32)^(subkey->k32); EPbuffer.k33=(EPbuffer.k33)^(subkey->k33);
EPbuffer.k34=(EPbuffer.k34)^(subkey->k34); EPbuffer.k35=(EPbuffer.k35)^(subkey->k35);
EPbuffer.k36=(EPbuffer.k36)^(subkey->k36); EPbuffer.k37=(EPbuffer.k37)^(subkey->k37);
EPbuffer.k38=(EPbuffer.k38)^(subkey->k38); EPbuffer.k39=(EPbuffer.k39)^(subkey->k39);
EPbuffer.k40=(EPbuffer.k40)^(subkey->k40); EPbuffer.k41=(EPbuffer.k41)^(subkey->k41);
EPbuffer.k42=(EPbuffer.k42)^(subkey->k42); EPbuffer.k43=(EPbuffer.k43)^(subkey->k43);
EPbuffer.k44=(EPbuffer.k44)^(subkey->k44); EPbuffer.k45=(EPbuffer.k45)^(subkey->k45);
EPbuffer.k46=(EPbuffer.k46)^(subkey->k46); EPbuffer.k47=(EPbuffer.k47)^(subkey->k47);
/*Fetch data from S-Boxes*/
row.bit0=EPbuffer.k5; row.bit1=EPbuffer.k0;
col.bit0=EPbuffer.k4; col.bit1=EPbuffer.k3;
col.bit2=EPbuffer.k2; col.bit3=EPbuffer.k1;
pbluebuffer->block0=temp4L.block=S1[prow->block][pcol->block];
rightpart->bit0=ptemp4S->bit3; rightpart->bit1=ptemp4S->bit2;
rightpart->bit2=ptemp4S->bit1; rightpart->bit3=ptemp4S->bit0;
row.bit0=EPbuffer.k11; row.bit1=EPbuffer.k6;
col.bit0=EPbuffer.k10; col.bit1=EPbuffer.k9;
col.bit2=EPbuffer.k8; col.bit3=EPbuffer.k7;
pbluebuffer->block1=temp4L.block=S2[prow->block][pcol->block];
rightpart->bit4=ptemp4S->bit3; rightpart->bit5=ptemp4S->bit2;
rightpart->bit6=ptemp4S->bit1; rightpart->bit7=ptemp4S->bit0;
row.bit0=EPbuffer.k17; row.bit1=EPbuffer.k12;
col.bit0=EPbuffer.k16; col.bit1=EPbuffer.k15;
col.bit2=EPbuffer.k14; col.bit3=EPbuffer.k13;
pbluebuffer->block2=temp4L.block=S3[prow->block][pcol->block];
rightpart->bit8=ptemp4S->bit3; rightpart->bit9=ptemp4S->bit2;
rightpart->bit10=ptemp4S->bit1; rightpart->bit11=ptemp4S->bit0;
row.bit0=EPbuffer.k23; row.bit1=EPbuffer.k18;
col.bit0=EPbuffer.k22; col.bit1=EPbuffer.k21;
col.bit2=EPbuffer.k20; col.bit3=EPbuffer.k19;
pbluebuffer->block3=temp4L.block=S4[prow->block][pcol->block];
rightpart->bit12=ptemp4S->bit3; rightpart->bit13=ptemp4S->bit2;
rightpart->bit14=ptemp4S->bit1; rightpart->bit15=ptemp4S->bit0;
row.bit0=EPbuffer.k29; row.bit1=EPbuffer.k24;
col.bit0=EPbuffer.k28; col.bit1=EPbuffer.k27;
col.bit2=EPbuffer.k26; col.bit3=EPbuffer.k25;
pbluebuffer->block4=temp4L.block=S5[prow->block][pcol->block];
rightpart->bit16=ptemp4S->bit3; rightpart->bit17=ptemp4S->bit2;
rightpart->bit18=ptemp4S->bit1; rightpart->bit19=ptemp4S->bit0;
row.bit0=EPbuffer.k35; row.bit1=EPbuffer.k30;
col.bit0=EPbuffer.k34; col.bit1=EPbuffer.k33;
col.bit2=EPbuffer.k32; col.bit3=EPbuffer.k31;
pbluebuffer->block5=temp4L.block=S6[prow->block][pcol->block];
rightpart->bit20=ptemp4S->bit3; rightpart->bit21=ptemp4S->bit2;
rightpart->bit22=ptemp4S->bit1; rightpart->bit23=ptemp4S->bit0;
row.bit0=EPbuffer.k41; row.bit1=EPbuffer.k36;
col.bit0=EPbuffer.k40; col.bit1=EPbuffer.k39;
col.bit2=EPbuffer.k38; col.bit3=EPbuffer.k37;
pbluebuffer->block6=temp4L.block=S7[prow->block][pcol->block];
rightpart->bit24=ptemp4S->bit3; rightpart->bit25=ptemp4S->bit2;
rightpart->bit26=ptemp4S->bit1; rightpart->bit27=ptemp4S->bit0;
row.bit0=EPbuffer.k47; row.bit1=EPbuffer.k42;
col.bit0=EPbuffer.k46; col.bit1=EPbuffer.k45;
col.bit2=EPbuffer.k44; col.bit3=EPbuffer.k43;
pbluebuffer->block7=temp4L.block=S8[prow->block][pcol->block];
rightpart->bit28=ptemp4S->bit3; rightpart->bit29=ptemp4S->bit2;
rightpart->bit30=ptemp4S->bit1; rightpart->bit31=ptemp4S->bit0;
/*Permutation*/
for(i=0;i<4;i++)
{
temp1[i]=bluebuffer[i];
}
rightpart->bit0=ptemp1->bit15; rightpart->bit1=ptemp1->bit6;
rightpart->bit2=ptemp1->bit19; rightpart->bit3=ptemp1->bit20;
rightpart->bit4=ptemp1->bit28; rightpart->bit5=ptemp1->bit11;
rightpart->bit6=ptemp1->bit27; rightpart->bit7=ptemp1->bit16;
rightpart->bit8=ptemp1->bit0; rightpart->bit9=ptemp1->bit14;
rightpart->bit10=ptemp1->bit22; rightpart->bit11=ptemp1->bit25;
rightpart->bit12=ptemp1->bit4; rightpart->bit13=ptemp1->bit17;
rightpart->bit14=ptemp1->bit30; rightpart->bit15=ptemp1->bit9;
rightpart->bit16=ptemp1->bit1; rightpart->bit17=ptemp1->bit7;
rightpart->bit18=ptemp1->bit23; rightpart->bit19=ptemp1->bit13;
rightpart->bit20=ptemp1->bit31; rightpart->bit21=ptemp1->bit26;
rightpart->bit22=ptemp1->bit2; rightpart->bit23=ptemp1->bit8;
rightpart->bit24=ptemp1->bit18; rightpart->bit25=ptemp1->bit12;
rightpart->bit26=ptemp1->bit29; rightpart->bit27=ptemp1->bit5;
rightpart->bit28=ptemp1->bit21; rightpart->bit29=ptemp1->bit10;
rightpart->bit30=ptemp1->bit3; rightpart->bit31=ptemp1->bit24;
/*XOR orperation*/
rightpart1->block=(rightpart1->block)^(leftpart->block);
/*Copy data to proper place*/
for(i=0;i<4;i++)
{
redbuffer[i]=temp[i];
}
/*Merge the two parts together*/
for(i=0;i<4;i++)
{
buffer[i]=bluebuffer[i];
buffer[i+4]=redbuffer[i];
}
/*Inverse initial permutation*/
for(i=0;i<8;i++)
{
tempbuffer[i]=buffer[i];
}
pbuffer->bit0=ptempbuffer->bit39; pbuffer->bit1=ptempbuffer->bit7;
pbuffer->bit2=ptempbuffer->bit47; pbuffer->bit3=ptempbuffer->bit15;
pbuffer->bit4=ptempbuffer->bit55; pbuffer->bit5=ptempbuffer->bit23;
pbuffer->bit6=ptempbuffer->bit63; pbuffer->bit7=ptempbuffer->bit31;
pbuffer->bit8=ptempbuffer->bit38; pbuffer->bit9=ptempbuffer->bit6;
pbuffer->bit10=ptempbuffer->bit46;pbuffer->bit11=ptempbuffer->bit14;
pbuffer->bit12=ptempbuffer->bit54;pbuffer->bit13=ptempbuffer->bit22;
pbuffer->bit14=ptempbuffer->bit62;pbuffer->bit15=ptempbuffer->bit30;
pbuffer->bit16=ptempbuffer->bit37;pbuffer->bit17=ptempbuffer->bit5;
pbuffer->bit18=ptempbuffer->bit45;pbuffer->bit19=ptempbuffer->bit13;
pbuffer->bit20=ptempbuffer->bit53;pbuffer->bit21=ptempbuffer->bit21;
pbuffer->bit22=ptempbuffer->bit61;pbuffer->bit23=ptempbuffer->bit29;
pbuffer->bit24=ptempbuffer->bit36;pbuffer->bit25=ptempbuffer->bit4;
pbuffer->bit26=ptempbuffer->bit44;pbuffer->bit27=ptempbuffer->bit12;
pbuffer->bit28=ptempbuffer->bit52;pbuffer->bit29=ptempbuffer->bit20;
pbuffer->bit30=ptempbuffer->bit60;pbuffer->bit31=ptempbuffer->bit28;
pbuffer->bit32=ptempbuffer->bit35;pbuffer->bit33=ptempbuffer->bit3;
pbuffer->bit34=ptempbuffer->bit43;pbuffer->bit35=ptempbuffer->bit11;
pbuffer->bit36=ptempbuffer->bit51;pbuffer->bit37=ptempbuffer->bit19;
pbuffer->bit38=ptempbuffer->bit59;pbuffer->bit39=ptempbuffer->bit27;
pbuffer->bit40=ptempbuffer->bit34;pbuffer->bit41=ptempbuffer->bit2;
pbuffer->bit42=ptempbuffer->bit42;pbuffer->bit43=ptempbuffer->bit10;
pbuffer->bit44=ptempbuffer->bit50;pbuffer->bit45=ptempbuffer->bit18;
pbuffer->bit46=ptempbuffer->bit58;pbuffer->bit47=ptempbuffer->bit26;
pbuffer->bit48=ptempbuffer->bit33;pbuffer->bit49=ptempbuffer->bit1;
pbuffer->bit50=ptempbuffer->bit41;pbuffer->bit51=ptempbuffer->bit9;
pbuffer->bit52=ptempbuffer->bit49;pbuffer->bit53=ptempbuffer->bit17;
pbuffer->bit54=ptempbuffer->bit57;pbuffer->bit55=ptempbuffer->bit25;
pbuffer->bit56=ptempbuffer->bit32;pbuffer->bit57=ptempbuffer->bit0;
pbuffer->bit58=ptempbuffer->bit40;pbuffer->bit59=ptempbuffer->bit8;
pbuffer->bit60=ptempbuffer->bit48;pbuffer->bit61=ptempbuffer->bit16;
pbuffer->bit62=ptempbuffer->bit56;pbuffer->bit63=ptempbuffer->bit24;
/*Recover plaintext data into charactors*/
for(i=0;i<8;i++)
{
tempbuffer[i]=buffer[i];
}
pbuffer->bit0=ptempbuffer->bit7; pbuffer->bit1=ptempbuffer->bit6;
pbuffer->bit2=ptempbuffer->bit5; pbuffer->bit3=ptempbuffer->bit4;
pbuffer->bit4=ptempbuffer->bit3; pbuffer->bit5=ptempbuffer->bit2;
pbuffer->bit6=ptempbuffer->bit1; pbuffer->bit7=ptempbuffer->bit0;
pbuffer->bit8=ptempbuffer->bit15; pbuffer->bit9=ptempbuffer->bit14;
pbuffer->bit10=ptempbuffer->bit13;pbuffer->bit11=ptempbuffer->bit12;
pbuffer->bit12=ptempbuffer->bit11;pbuffer->bit13=ptempbuffer->bit10;
pbuffer->bit14=ptempbuffer->bit9; pbuffer->bit15=ptempbuffer->bit8;
pbuffer->bit16=ptempbuffer->bit23;pbuffer->bit17=ptempbuffer->bit22;
pbuffer->bit18=ptempbuffer->bit21;pbuffer->bit19=ptempbuffer->bit20;
pbuffer->bit20=ptempbuffer->bit19;pbuffer->bit21=ptempbuffer->bit18;
pbuffer->bit22=ptempbuffer->bit17;pbuffer->bit23=ptempbuffer->bit16;
pbuffer->bit24=ptempbuffer->bit31;pbuffer->bit25=ptempbuffer->bit30;
pbuffer->bit26=ptempbuffer->bit29;pbuffer->bit27=ptempbuffer->bit28;
pbuffer->bit28=ptempbuffer->bit27;pbuffer->bit29=ptempbuffer->bit26;
pbuffer->bit30=ptempbuffer->bit25;pbuffer->bit31=ptempbuffer->bit24;
pbuffer->bit32=ptempbuffer->bit39;pbuffer->bit33=ptempbuffer->bit38;
pbuffer->bit34=ptempbuffer->bit37;pbuffer->bit35=ptempbuffer->bit36;
pbuffer->bit36=ptempbuffer->bit35;pbuffer->bit37=ptempbuffer->bit34;
pbuffer->bit38=ptempbuffer->bit33;pbuffer->bit39=ptempbuffer->bit32;
pbuffer->bit40=ptempbuffer->bit47;pbuffer->bit41=ptempbuffer->bit46;
pbuffer->bit42=ptempbuffer->bit45;pbuffer->bit43=ptempbuffer->bit44;
pbuffer->bit44=ptempbuffer->bit43;pbuffer->bit45=ptempbuffer->bit42;
pbuffer->bit46=ptempbuffer->bit41;pbuffer->bit47=ptempbuffer->bit40;
pbuffer->bit48=ptempbuffer->bit55;pbuffer->bit49=ptempbuffer->bit54;
pbuffer->bit50=ptempbuffer->bit53;pbuffer->bit51=ptempbuffer->bit52;
pbuffer->bit52=ptempbuffer->bit51;pbuffer->bit53=ptempbuffer->bit50;
pbuffer->bit54=ptempbuffer->bit49;pbuffer->bit55=ptempbuffer->bit48;
pbuffer->bit56=ptempbuffer->bit63;pbuffer->bit57=ptempbuffer->bit62;
pbuffer->bit58=ptempbuffer->bit61;pbuffer->bit59=ptempbuffer->bit60;
pbuffer->bit60=ptempbuffer->bit59;pbuffer->bit61=ptempbuffer->bit58;
pbuffer->bit62=ptempbuffer->bit57;pbuffer->bit63=ptempbuffer->bit56;
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -