⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_gen.c

📁 本人基于William Stalling的《密码学与网络安全》实现的128位DES加密算法
💻 C
📖 第 1 页 / 共 4 页
字号:

/*********************************************/
/****************Key8 generation**************/
/*********************************************/

	/*Left shift of the both parts(for key8)*/
	templ1=tempkey.k0;         tempr1=tempkey.k28;
	templ2=tempkey.k1;         tempr2=tempkey.k29;
	tempkey.k0=tempkey.k2;     tempkey.k28=tempkey.k30;
	tempkey.k1=tempkey.k3;     tempkey.k29=tempkey.k31;
	tempkey.k2=tempkey.k4;     tempkey.k30=tempkey.k32;
	tempkey.k3=tempkey.k5;     tempkey.k31=tempkey.k33;
	tempkey.k4=tempkey.k6;     tempkey.k32=tempkey.k34;
	tempkey.k5=tempkey.k7;     tempkey.k33=tempkey.k35;
	tempkey.k6=tempkey.k8;     tempkey.k34=tempkey.k36;
	tempkey.k7=tempkey.k9;     tempkey.k35=tempkey.k37;
	tempkey.k8=tempkey.k10;    tempkey.k36=tempkey.k38;
	tempkey.k9=tempkey.k11;    tempkey.k37=tempkey.k39;
	tempkey.k10=tempkey.k12;   tempkey.k38=tempkey.k40;
	tempkey.k11=tempkey.k13;   tempkey.k39=tempkey.k41;
	tempkey.k12=tempkey.k14;   tempkey.k40=tempkey.k42;
	tempkey.k13=tempkey.k15;   tempkey.k41=tempkey.k43;
	tempkey.k14=tempkey.k16;   tempkey.k42=tempkey.k44;
	tempkey.k15=tempkey.k17;   tempkey.k43=tempkey.k45;
	tempkey.k16=tempkey.k18;   tempkey.k44=tempkey.k46;
	tempkey.k17=tempkey.k19;   tempkey.k45=tempkey.k47;
	tempkey.k18=tempkey.k20;   tempkey.k46=tempkey.k48;
	tempkey.k19=tempkey.k21;   tempkey.k47=tempkey.k49;
	tempkey.k20=tempkey.k22;   tempkey.k48=tempkey.k50;
	tempkey.k21=tempkey.k23;   tempkey.k49=tempkey.k51;
	tempkey.k22=tempkey.k24;   tempkey.k50=tempkey.k52;
	tempkey.k23=tempkey.k25;   tempkey.k51=tempkey.k53;
	tempkey.k24=tempkey.k26;   tempkey.k52=tempkey.k54;
	tempkey.k25=tempkey.k27;   tempkey.k53=tempkey.k55;
	tempkey.k26=templ1;        tempkey.k54=tempr1;
	tempkey.k27=templ2;        tempkey.k55=tempr2;

	/*Permuted choice 2(for key 8)*/
	subkey8.k0=tempkey.k13; subkey8.k1=tempkey.k16; subkey8.k2=tempkey.k10;
    subkey8.k3=tempkey.k23; subkey8.k4=tempkey.k0;  subkey8.k5=tempkey.k4;
	subkey8.k6=tempkey.k2;  subkey8.k7=tempkey.k27; subkey8.k8=tempkey.k14;
	subkey8.k9=tempkey.k5;  subkey8.k10=tempkey.k20;subkey8.k11=tempkey.k9;
	subkey8.k12=tempkey.k22;subkey8.k13=tempkey.k18;subkey8.k14=tempkey.k11;
	subkey8.k15=tempkey.k3; subkey8.k16=tempkey.k25;subkey8.k17=tempkey.k7;
    subkey8.k18=tempkey.k15;subkey8.k19=tempkey.k6; subkey8.k20=tempkey.k26;
	subkey8.k21=tempkey.k19;subkey8.k22=tempkey.k12;subkey8.k23=tempkey.k1;
	subkey8.k24=tempkey.k40;subkey8.k25=tempkey.k51;subkey8.k26=tempkey.k30;
	subkey8.k27=tempkey.k36;subkey8.k28=tempkey.k46;subkey8.k29=tempkey.k54;
	subkey8.k30=tempkey.k29;subkey8.k31=tempkey.k39;subkey8.k32=tempkey.k50;
    subkey8.k33=tempkey.k44;subkey8.k34=tempkey.k32;subkey8.k35=tempkey.k47;
	subkey8.k36=tempkey.k43;subkey8.k37=tempkey.k48;subkey8.k38=tempkey.k38;
	subkey8.k39=tempkey.k55;subkey8.k40=tempkey.k33;subkey8.k41=tempkey.k52;
	subkey8.k42=tempkey.k45;subkey8.k43=tempkey.k41;subkey8.k44=tempkey.k49;
	subkey8.k45=tempkey.k35;subkey8.k46=tempkey.k28;subkey8.k47=tempkey.k31;
 

/*********************************************/
/****************Key9 generation**************/
/*********************************************/

	/*Left shift of the both parts(for key9)*/
	templ1=tempkey.k0;         tempr1=tempkey.k28;
	tempkey.k0=tempkey.k1;     tempkey.k28=tempkey.k29;
	tempkey.k1=tempkey.k2;     tempkey.k29=tempkey.k30;
	tempkey.k2=tempkey.k3;     tempkey.k30=tempkey.k31;
	tempkey.k3=tempkey.k4;     tempkey.k31=tempkey.k32;
	tempkey.k4=tempkey.k5;     tempkey.k32=tempkey.k33;
	tempkey.k5=tempkey.k6;     tempkey.k33=tempkey.k34;
	tempkey.k6=tempkey.k7;     tempkey.k34=tempkey.k35;
	tempkey.k7=tempkey.k8;     tempkey.k35=tempkey.k36;
	tempkey.k8=tempkey.k9;     tempkey.k36=tempkey.k37;
	tempkey.k9=tempkey.k10;    tempkey.k37=tempkey.k38;
	tempkey.k10=tempkey.k11;   tempkey.k38=tempkey.k39;
	tempkey.k11=tempkey.k12;   tempkey.k39=tempkey.k40;
	tempkey.k12=tempkey.k13;   tempkey.k40=tempkey.k41;
	tempkey.k13=tempkey.k14;   tempkey.k41=tempkey.k42;
	tempkey.k14=tempkey.k15;   tempkey.k42=tempkey.k43;
	tempkey.k15=tempkey.k16;   tempkey.k43=tempkey.k44;
	tempkey.k16=tempkey.k17;   tempkey.k44=tempkey.k45;
	tempkey.k17=tempkey.k18;   tempkey.k45=tempkey.k46;
	tempkey.k18=tempkey.k19;   tempkey.k46=tempkey.k47;
	tempkey.k19=tempkey.k20;   tempkey.k47=tempkey.k48;
	tempkey.k20=tempkey.k21;   tempkey.k48=tempkey.k49;
	tempkey.k21=tempkey.k22;   tempkey.k49=tempkey.k50;
	tempkey.k22=tempkey.k23;   tempkey.k50=tempkey.k51;
	tempkey.k23=tempkey.k24;   tempkey.k51=tempkey.k52;
	tempkey.k24=tempkey.k25;   tempkey.k52=tempkey.k53;
	tempkey.k25=tempkey.k26;   tempkey.k53=tempkey.k54;
	tempkey.k26=tempkey.k27;   tempkey.k54=tempkey.k55;
	tempkey.k27=templ1;        tempkey.k55=tempr1;

	/*Permuted choice 2(for key 9)*/
	subkey9.k0=tempkey.k13; subkey9.k1=tempkey.k16; subkey9.k2=tempkey.k10;
    subkey9.k3=tempkey.k23; subkey9.k4=tempkey.k0;  subkey9.k5=tempkey.k4;
	subkey9.k6=tempkey.k2;  subkey9.k7=tempkey.k27; subkey9.k8=tempkey.k14;
	subkey9.k9=tempkey.k5;  subkey9.k10=tempkey.k20;subkey9.k11=tempkey.k9;
	subkey9.k12=tempkey.k22;subkey9.k13=tempkey.k18;subkey9.k14=tempkey.k11;
	subkey9.k15=tempkey.k3; subkey9.k16=tempkey.k25;subkey9.k17=tempkey.k7;
    subkey9.k18=tempkey.k15;subkey9.k19=tempkey.k6; subkey9.k20=tempkey.k26;
	subkey9.k21=tempkey.k19;subkey9.k22=tempkey.k12;subkey9.k23=tempkey.k1;
	subkey9.k24=tempkey.k40;subkey9.k25=tempkey.k51;subkey9.k26=tempkey.k30;
	subkey9.k27=tempkey.k36;subkey9.k28=tempkey.k46;subkey9.k29=tempkey.k54;
	subkey9.k30=tempkey.k29;subkey9.k31=tempkey.k39;subkey9.k32=tempkey.k50;
    subkey9.k33=tempkey.k44;subkey9.k34=tempkey.k32;subkey9.k35=tempkey.k47;
	subkey9.k36=tempkey.k43;subkey9.k37=tempkey.k48;subkey9.k38=tempkey.k38;
	subkey9.k39=tempkey.k55;subkey9.k40=tempkey.k33;subkey9.k41=tempkey.k52;
	subkey9.k42=tempkey.k45;subkey9.k43=tempkey.k41;subkey9.k44=tempkey.k49;
	subkey9.k45=tempkey.k35;subkey9.k46=tempkey.k28;subkey9.k47=tempkey.k31;
 
   
/*********************************************/
/***************Key10 generation**************/
/*********************************************/

	/*Left shift of the both parts(for key10)*/
	templ1=tempkey.k0;         tempr1=tempkey.k28;
	templ2=tempkey.k1;         tempr2=tempkey.k29;
	tempkey.k0=tempkey.k2;     tempkey.k28=tempkey.k30;
	tempkey.k1=tempkey.k3;     tempkey.k29=tempkey.k31;
	tempkey.k2=tempkey.k4;     tempkey.k30=tempkey.k32;
	tempkey.k3=tempkey.k5;     tempkey.k31=tempkey.k33;
	tempkey.k4=tempkey.k6;     tempkey.k32=tempkey.k34;
	tempkey.k5=tempkey.k7;     tempkey.k33=tempkey.k35;
	tempkey.k6=tempkey.k8;     tempkey.k34=tempkey.k36;
	tempkey.k7=tempkey.k9;     tempkey.k35=tempkey.k37;
	tempkey.k8=tempkey.k10;    tempkey.k36=tempkey.k38;
	tempkey.k9=tempkey.k11;    tempkey.k37=tempkey.k39;
	tempkey.k10=tempkey.k12;   tempkey.k38=tempkey.k40;
	tempkey.k11=tempkey.k13;   tempkey.k39=tempkey.k41;
	tempkey.k12=tempkey.k14;   tempkey.k40=tempkey.k42;
	tempkey.k13=tempkey.k15;   tempkey.k41=tempkey.k43;
	tempkey.k14=tempkey.k16;   tempkey.k42=tempkey.k44;
	tempkey.k15=tempkey.k17;   tempkey.k43=tempkey.k45;
	tempkey.k16=tempkey.k18;   tempkey.k44=tempkey.k46;
	tempkey.k17=tempkey.k19;   tempkey.k45=tempkey.k47;
	tempkey.k18=tempkey.k20;   tempkey.k46=tempkey.k48;
	tempkey.k19=tempkey.k21;   tempkey.k47=tempkey.k49;
	tempkey.k20=tempkey.k22;   tempkey.k48=tempkey.k50;
	tempkey.k21=tempkey.k23;   tempkey.k49=tempkey.k51;
	tempkey.k22=tempkey.k24;   tempkey.k50=tempkey.k52;
	tempkey.k23=tempkey.k25;   tempkey.k51=tempkey.k53;
	tempkey.k24=tempkey.k26;   tempkey.k52=tempkey.k54;
	tempkey.k25=tempkey.k27;   tempkey.k53=tempkey.k55;
	tempkey.k26=templ1;        tempkey.k54=tempr1;
	tempkey.k27=templ2;        tempkey.k55=tempr2;

	/*Permuted choice 2(for key 10)*/
	subkey10.k0=tempkey.k13; subkey10.k1=tempkey.k16; subkey10.k2=tempkey.k10;
    subkey10.k3=tempkey.k23; subkey10.k4=tempkey.k0;  subkey10.k5=tempkey.k4;
	subkey10.k6=tempkey.k2;  subkey10.k7=tempkey.k27; subkey10.k8=tempkey.k14;
	subkey10.k9=tempkey.k5;  subkey10.k10=tempkey.k20;subkey10.k11=tempkey.k9;
	subkey10.k12=tempkey.k22;subkey10.k13=tempkey.k18;subkey10.k14=tempkey.k11;
	subkey10.k15=tempkey.k3; subkey10.k16=tempkey.k25;subkey10.k17=tempkey.k7;
    subkey10.k18=tempkey.k15;subkey10.k19=tempkey.k6; subkey10.k20=tempkey.k26;
	subkey10.k21=tempkey.k19;subkey10.k22=tempkey.k12;subkey10.k23=tempkey.k1;
	subkey10.k24=tempkey.k40;subkey10.k25=tempkey.k51;subkey10.k26=tempkey.k30;
	subkey10.k27=tempkey.k36;subkey10.k28=tempkey.k46;subkey10.k29=tempkey.k54;
	subkey10.k30=tempkey.k29;subkey10.k31=tempkey.k39;subkey10.k32=tempkey.k50;
    subkey10.k33=tempkey.k44;subkey10.k34=tempkey.k32;subkey10.k35=tempkey.k47;
	subkey10.k36=tempkey.k43;subkey10.k37=tempkey.k48;subkey10.k38=tempkey.k38;
	subkey10.k39=tempkey.k55;subkey10.k40=tempkey.k33;subkey10.k41=tempkey.k52;
	subkey10.k42=tempkey.k45;subkey10.k43=tempkey.k41;subkey10.k44=tempkey.k49;
	subkey10.k45=tempkey.k35;subkey10.k46=tempkey.k28;subkey10.k47=tempkey.k31;
 

/*********************************************/
/***************Key11 generation**************/
/*********************************************/

	/*Left shift of the both parts(for key11)*/
	templ1=tempkey.k0;         tempr1=tempkey.k28;
	templ2=tempkey.k1;         tempr2=tempkey.k29;
	tempkey.k0=tempkey.k2;     tempkey.k28=tempkey.k30;
	tempkey.k1=tempkey.k3;     tempkey.k29=tempkey.k31;
	tempkey.k2=tempkey.k4;     tempkey.k30=tempkey.k32;
	tempkey.k3=tempkey.k5;     tempkey.k31=tempkey.k33;
	tempkey.k4=tempkey.k6;     tempkey.k32=tempkey.k34;
	tempkey.k5=tempkey.k7;     tempkey.k33=tempkey.k35;
	tempkey.k6=tempkey.k8;     tempkey.k34=tempkey.k36;
	tempkey.k7=tempkey.k9;     tempkey.k35=tempkey.k37;
	tempkey.k8=tempkey.k10;    tempkey.k36=tempkey.k38;
	tempkey.k9=tempkey.k11;    tempkey.k37=tempkey.k39;
	tempkey.k10=tempkey.k12;   tempkey.k38=tempkey.k40;
	tempkey.k11=tempkey.k13;   tempkey.k39=tempkey.k41;
	tempkey.k12=tempkey.k14;   tempkey.k40=tempkey.k42;
	tempkey.k13=tempkey.k15;   tempkey.k41=tempkey.k43;
	tempkey.k14=tempkey.k16;   tempkey.k42=tempkey.k44;
	tempkey.k15=tempkey.k17;   tempkey.k43=tempkey.k45;
	tempkey.k16=tempkey.k18;   tempkey.k44=tempkey.k46;
	tempkey.k17=tempkey.k19;   tempkey.k45=tempkey.k47;
	tempkey.k18=tempkey.k20;   tempkey.k46=tempkey.k48;
	tempkey.k19=tempkey.k21;   tempkey.k47=tempkey.k49;
	tempkey.k20=tempkey.k22;   tempkey.k48=tempkey.k50;
	tempkey.k21=tempkey.k23;   tempkey.k49=tempkey.k51;
	tempkey.k22=tempkey.k24;   tempkey.k50=tempkey.k52;
	tempkey.k23=tempkey.k25;   tempkey.k51=tempkey.k53;
	tempkey.k24=tempkey.k26;   tempkey.k52=tempkey.k54;
	tempkey.k25=tempkey.k27;   tempkey.k53=tempkey.k55;
	tempkey.k26=templ1;        tempkey.k54=tempr1;
	tempkey.k27=templ2;        tempkey.k55=tempr2;

	/*Permuted choice 2(for key 11)*/
	subkey11.k0=tempkey.k13; subkey11.k1=tempkey.k16; subkey11.k2=tempkey.k10;
    subkey11.k3=tempkey.k23; subkey11.k4=tempkey.k0;  subkey11.k5=tempkey.k4;
	subkey11.k6=tempkey.k2;  subkey11.k7=tempkey.k27; subkey11.k8=tempkey.k14;
	subkey11.k9=tempkey.k5;  subkey11.k10=tempkey.k20;subkey11.k11=tempkey.k9;
	subkey11.k12=tempkey.k22;subkey11.k13=tempkey.k18;subkey11.k14=tempkey.k11;
	subkey11.k15=tempkey.k3; subkey11.k16=tempkey.k25;subkey11.k17=tempkey.k7;
    subkey11.k18=tempkey.k15;subkey11.k19=tempkey.k6; subkey11.k20=tempkey.k26;
	subkey11.k21=tempkey.k19;subkey11.k22=tempkey.k12;subkey11.k23=tempkey.k1;
	subkey11.k24=tempkey.k40;subkey11.k25=tempkey.k51;subkey11.k26=tempkey.k30;
	subkey11.k27=tempkey.k36;subkey11.k28=tempkey.k46;subkey11.k29=tempkey.k54;
	subkey11.k30=tempkey.k29;subkey11.k31=tempkey.k39;subkey11.k32=tempkey.k50;
    subkey11.k33=tempkey.k44;subkey11.k34=tempkey.k32;subkey11.k35=tempkey.k47;
	subkey11.k36=tempkey.k43;subkey11.k37=tempkey.k48;subkey11.k38=tempkey.k38;
	subkey11.k39=tempkey.k55;subkey11.k40=tempkey.k33;subkey11.k41=tempkey.k52;
	subkey11.k42=tempkey.k45;subkey11.k43=tempkey.k41;subkey11.k44=tempkey.k49;
	subkey11.k45=tempkey.k35;subkey11.k46=tempkey.k28;subkey11.k47=tempkey.k31;

/*********************************************/
/***************Key12 generation**************/
/*********************************************/

	/*Left shift of the both parts(for key12)*/
	templ1=tempkey.k0;         tempr1=tempkey.k28;
	templ2=tempkey.k1;         tempr2=tempkey.k29;
	tempkey.k0=tempkey.k2;     tempkey.k28=tempkey.k30;
	tempkey.k1=tempkey.k3;     tempkey.k29=tempkey.k31;
	tempkey.k2=tempkey.k4;     tempkey.k30=tempkey.k32;
	tempkey.k3=tempkey.k5;     tempkey.k31=tempkey.k33;
	tempkey.k4=tempkey.k6;     tempkey.k32=tempkey.k34;
	tempkey.k5=tempkey.k7;     tempkey.k33=tempkey.k35;
	tempkey.k6=tempkey.k8;     tempkey.k34=tempkey.k36;
	tempkey.k7=tempkey.k9;     tempkey.k35=tempkey.k37;
	tempkey.k8=tempkey.k10;    tempkey.k36=tempkey.k38;
	tempkey.k9=tempkey.k11;    tempkey.k37=tempkey.k39;
	tempkey.k10=tempkey.k12;   tempkey.k38=tempkey.k40;
	tempkey.k11=tempkey.k13;   tempkey.k39=tempkey.k41;
	tempkey.k12=tempkey.k14;   tempkey.k40=tempkey.k42;
	tempkey.k13=tempkey.k15;   tempkey.k41=tempkey.k43;
	tempkey.k14=tempkey.k16;   tempkey.k42=tempkey.k44;
	tempkey.k15=tempkey.k17;   tempkey.k43=tempkey.k45;
	tempkey.k16=tempkey.k18;   tempkey.k44=tempkey.k46;
	tempkey.k17=tempkey.k19;   tempkey.k45=tempkey.k47;
	tempkey.k18=tempkey.k20;   tempkey.k46=tempkey.k48;
	tempkey.k19=tempkey.k21;   tempkey.k47=tempkey.k49;
	tempkey.k20=tempkey.k22;   tempkey.k48=tempkey.k50;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -