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

📄 key.cpp

📁 用c++实现des算法 整体思路 用key.cpp 文件来产生秘钥
💻 CPP
字号:
////////////////////////////////////////////// FileName: key.cpp // Creator: Du Feilong// Date: 2007-10-11// Comment: Create key//////////////////////////////////////////// #include<iostream>#include<fstream>#include<string>using namespace std;int StartKey[64];int key0[56],key1[56],key2[56],key3[56],key4[56];		int LS[4]={1,1,2,2};int C0[28],D0[28],C1[28],D1[28],C2[28],D2[28],C3[28],D3[28],C4[28],D4[28];int KeyIPC[56]={	56,48,40,32,24,16,8,0,57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,60,52,44,36,28,20,12,4,27,19,11,3};int KeyPC[48]={13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,	             25 ,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,	             50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31};	             void StartKeyget()		{	for(int i=0;i<64;i++)		StartKey[i]=0;	cout<<"enter your key(8 characters)"<<endl;	char n[8];	getchar();	for(int i=0;i<8;i++)		n[i]=getchar();	int k=0;	while(k<8){										for(int i=7;i>=0;i--){			StartKey[k*8+i]=n[k]&1;			n[k]=n[k]>>1;		}		k++;	}}void keyconversion1(){	int i;	for(i=0;i<56;i++)		key0[i]=StartKey[KeyIPC[i]];}void keydivide(){	int i;	for(i=0;i<28;i++)		C0[i]=key0[i];	for(i=28;i<56;i++)		D0[i-28]=key0[i];}void shift(int *cp,int *dp,int *c,int *d,int m){	int i;	for(i=0;i<28;i++){		c[i]=cp[(i+m)%28];		d[i]=dp[(i+m)%28];	}}void keyconversion2(int *k,int *K){	int i;	for(i=0;i<56;i++)		K[i]=k[KeyPC[i]];}void connect(int *c,int *d,int *k,int *K){	int i;	for(i=0;i<28;i++)		k[i]=c[i];	for(i=28;i<56;i++)		k[i]=d[i-28];	keyconversion2(k,K);}void displaykey(int *k){	int i;	for(i=0;i<56;i++){		if(i%28==0&&i!=0)			cout<<endl;		cout<<k[i]<<" ";	}	cout<<endl;}void displayKey(int *K){	int i;	for(i=0;i<48;i++){		if(i%16==0&&i!=0)			cout<<endl;		cout<<K[i]<<" ";	}	cout<<endl;}	void createkey(int *Key1,int *Key2,int *Key3,int *Key4){	StartKeyget();	keyconversion1();	keydivide();			shift(C0,D0,C1,D1,LS[0]);	connect(C1,D1,key1,Key1);		shift(C1,D1,C2,D2,LS[1]);	connect(C2,D2,key2,Key2);		shift(C2,D2,C3,D3,LS[2]);	connect(C3,D3,key3,Key3);		shift(C3,D3,C4,D4,LS[3]);	connect(C4,D4,key4,Key4);}	

⌨️ 快捷键说明

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