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

📄 des.h

📁 DES 加密解密代码实例
💻 H
📖 第 1 页 / 共 2 页
字号:
			store[i]=r[i];
		expansion(p,r);
		xor(p,k5,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第6次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k6,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第7次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k7,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第8次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k8,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第9次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k9,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第10次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k10,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第11次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k11,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第12次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k12,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第13次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k13,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第14次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k14,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第15次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k15,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第16次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k16,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
	//////////////整合两部分
		for(i=0;i<32;i++)
		{
			a[i]=r[i];
			a[32+i]=l[i];
		}
		exchange_end(b,a);		//逆初始换位
		for(i=0;i<64;i++)
			miwen[index*8+i]=b[i];
	}
}

void DES_decryption(char mingwen[],int m[],char key[],int length)
{
	int i,index;
	int a[64],b[64],c[28],d[28],l[32],r[32],store[32],p[48],x[32],e[56],k1[48],k2[48],k3[48],k4[48],k5[48],k6[48],k7[48],k8[48],k9[48],k10[48],k11[48],k12[48],k13[48],k14[48],k15[48],k16[48];
	char temp[9];
	turntoB(b,key,8);			//得到初始64比特密钥
	selectC(c,b);
	selectD(d,b);
	/////////////////////////////////////取得K1
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k1);
	/////////////////////////////////////取得K2
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k2);
	/////////////////////////////////////取得K3
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k3);
	/////////////////////////////////////取得K4
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k4);
	/////////////////////////////////////取得K5
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k5);
	/////////////////////////////////////取得K6
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k6);
	/////////////////////////////////////取得K7
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k7);
	/////////////////////////////////////取得K8
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k8);
	/////////////////////////////////////取得K9
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k9);
	/////////////////////////////////////取得K10
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k10);
	/////////////////////////////////////取得K11
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k11);
	/////////////////////////////////////取得K12
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k12);
	/////////////////////////////////////取得K13
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k13);
	/////////////////////////////////////取得K14
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k14);
	/////////////////////////////////////取得K15
	shift_left(c,28);
	shift_left(d,28);
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k15);
	/////////////////////////////////////取得K16
	shift_left(c,28);
	shift_left(d,28);
	for(i=0;i<28;i++)
		e[i]=c[i];
	for(i=0;i<28;i++)
		e[28+i]=d[i];
	EtoK(e,k16);
	/////////////////////密钥处理完毕


	///////////////////////明文处理阶段

	for(index=0;index<512;index+=64)	//将明文分块
	{
		for(i=0;i<64;i++)
			b[i]=m[index+i];
		exchange_start(a,b);		//初始换位
		for(i=0;i<32;i++)			//得到L和R
		{	
			l[i]=a[i];
			r[i]=a[32+i];
		}
		/////////////////第1次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k16,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第2次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k15,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第3次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k14,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第4次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k13,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第5次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k12,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第6次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k11,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第7次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k10,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第8次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k9,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第9次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k8,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第10次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k7,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第11次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k6,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第12次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k5,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第13次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k4,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第14次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k3,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第15次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k2,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
		/////////////////第16次运算
		for(i=0;i<32;i++)
			store[i]=r[i];
		expansion(p,r);
		xor(p,k1,48);
		table(x,p);
		P(x);
		xor(x,l,32);
		for(i=0;i<32;i++)
			r[i]=x[i];
		for(i=0;i<32;i++)
			l[i]=store[i];
	//////////////整合两部分
		for(i=0;i<32;i++)
		{
			a[i]=r[i];
			a[32+i]=l[i];
		}
		exchange_end(b,a);		//逆初始换位
		turntoCH(temp,b,8);
		for(i=0;i<8;i++)
			mingwen[index/8+i]=temp[i];
	}
	mingwen[length]='\0';
}

⌨️ 快捷键说明

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