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

📄 key_gen.c

📁 本人基于William Stalling的《密码学与网络安全》实现的128位DES加密算法
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 12)*/
	subkey12.k0=tempkey.k13; subkey12.k1=tempkey.k16; subkey12.k2=tempkey.k10;
    subkey12.k3=tempkey.k23; subkey12.k4=tempkey.k0;  subkey12.k5=tempkey.k4;
	subkey12.k6=tempkey.k2;  subkey12.k7=tempkey.k27; subkey12.k8=tempkey.k14;
	subkey12.k9=tempkey.k5;  subkey12.k10=tempkey.k20;subkey12.k11=tempkey.k9;
	subkey12.k12=tempkey.k22;subkey12.k13=tempkey.k18;subkey12.k14=tempkey.k11;
	subkey12.k15=tempkey.k3; subkey12.k16=tempkey.k25;subkey12.k17=tempkey.k7;
    subkey12.k18=tempkey.k15;subkey12.k19=tempkey.k6; subkey12.k20=tempkey.k26;
	subkey12.k21=tempkey.k19;subkey12.k22=tempkey.k12;subkey12.k23=tempkey.k1;
	subkey12.k24=tempkey.k40;subkey12.k25=tempkey.k51;subkey12.k26=tempkey.k30;
	subkey12.k27=tempkey.k36;subkey12.k28=tempkey.k46;subkey12.k29=tempkey.k54;
	subkey12.k30=tempkey.k29;subkey12.k31=tempkey.k39;subkey12.k32=tempkey.k50;
    subkey12.k33=tempkey.k44;subkey12.k34=tempkey.k32;subkey12.k35=tempkey.k47;
	subkey12.k36=tempkey.k43;subkey12.k37=tempkey.k48;subkey12.k38=tempkey.k38;
	subkey12.k39=tempkey.k55;subkey12.k40=tempkey.k33;subkey12.k41=tempkey.k52;
	subkey12.k42=tempkey.k45;subkey12.k43=tempkey.k41;subkey12.k44=tempkey.k49;
	subkey12.k45=tempkey.k35;subkey12.k46=tempkey.k28;subkey12.k47=tempkey.k31;
 

/*********************************************/
/***************Key13 generation**************/
/*********************************************/

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

/*********************************************/
/***************Key14 generation**************/
/*********************************************/

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

/*********************************************/
/***************Key15 generation**************/
/*********************************************/

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

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

	return 0;
}

⌨️ 快捷键说明

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