亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? des.cpp

?? DES加密算法是應用很普遍的加密算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		}
		
		/* P盒替換 */
		for(j=0;j<32;j++)
			P_result[j]=S_result[P_Box[j]-1];
		if(isdetialprint)
		{
			cout<<"f(R"<<i-1<<",K"<<i<<")=";
			print32(P_result);
		}
			
		/* 將32位明文的經過P盒替換后的右半部分與起初分組的明文的左半部分進行異或 */
		for(j=0;j<32;j++)
			text32_right[i][j]=P_result[j]^text32_left[i-1][j];
		if(isdetialprint)
		{
			cout<<"R"<<i<<"=";
			print32(text32_right[i]);
		}

		/* L[i]=R[i-1] */
		for(j=0;j<32;j++)
			text32_left[i][j]=text32_right[i-1][j];
		if(isdetialprint)
		{
			cout<<"L"<<i<<"=R"<<i-1<<"=";
			print32(text32_left[i]);
			cout<<endl;
		}

	}//end of f function

	/* 將L16與R16合并 */
	for(i=0;i<32;i++)
	{
		text64[i]=text32_right[16][i];
		text64[i+32]=text32_left[16][i];
	}

	/* 末置換 */
	for(i=0;i<64;i++)
		text2[i]=text64[Final_Permutation[i]-1];
	if(isdetialprint)
	{
		cout<<"IP-1:";
		print64(text2);
		cout<<endl;
	}
}

void converse(bitset<64> &bitvec)
{
	for(int i=0;i<32;i++)
		if(bitvec[i]!=bitvec[63-i])
		{
			bitvec.flip(i);
			bitvec.flip(63-i);
		}
}
/* 加密子程序 */
void DES_Encrypt(bitset<64> Plaintext,bitset<64> & key,bitset<64> &Ciphertext)
{
	DES_Function(Plaintext,Ciphertext,key,Encrypt);
};

/* 解密子程序 */
void DES_Decrypt(bitset<64> &Plaintext,bitset<64> key,bitset<64> Ciphertext)
{
	DES_Function(Ciphertext,Plaintext,key,Decrypt);
};


void testProgram()
{
	unsigned char ch;
	bool isInput=false;
	int i,j,CheckParity;
	string str1("0000000100100011010001010110011110001001101010111100110111101111");
	string str2("0001001100110100010101110111100110011011101111001101111111110001");
	string str3("1010101010101010101010101010101010101010101010101010101010101010");
	bitset<64> Plaintext(str1),Key(str2),Ciphertext(str3);

	converse(Plaintext);
	converse(Key);
	/* 讓計算機自動執行還是親自輸入 */
	cout<<"請選擇是讓計算機自動執行還是親自輸入,讓計算機自動執行嗎?(Y/N)";
	cin>>ch;
	if((ch=='n')||(ch=='N')) isInput=true;

	/* 讀入原文和密鑰*/
	if(isInput)
	{
		/* 讀入原文 */
		cout<<"請輸入要加密的原文或者原文的Hash值(任意8個字符):"<<endl;	
		for(i=0;i<8;i++)
		{
			cin>>ch;
			for(j=0;j<8;j++)
			{
				Plaintext[i*8+7-j]=ch&1;
				ch>>=1;
			}
		}

		/* 讀入密鑰并加入奇偶校驗位 */
		cout<<"請輸入密鑰(8個字符):"<<endl;	
		for(i=0;i<8;i++)
		{
			cin>>ch;
			for(j=0;j<8;j++)
			{
				if(ch&1)
					Key.set((8-i)*8-(8-j));
				else Key.reset((8-i)*8-(8-j));
				ch>>=1;
			}
			CheckParity=((Key.count()%2==0)?0:1);//奇偶校驗,如果有奇數個1,則奇偶校驗位為1,否則為零
			if(CheckParity) 
				Key.set((8-i)*8-1);
			else Key.reset((8-i)*8-1);
		}
	}
	else
	{
		cout<<"要加密的原文或者原文的Hash值為:"<<endl;
		print64(Plaintext);
		cout<<"密鑰為:"<<endl;
		print64(Key);
	}

	/* 用DES對原文進行加密操作 */
	cout<<endl<<"正在對原文進行加密..."<<endl<<endl;
	DES_Encrypt(Plaintext,Key,Ciphertext);

	/* 加密后輸出 */
	cout<<"得到的密文是:"<<endl;
	print64(Ciphertext);
	if(isInput)
	{
		cout<<"相應的字符串為:";
		for(i=0;i<8;i++)
		{
			for(j=0;j<8;j++)
			{
				ch=Ciphertext[i*8+j];
				ch<<=1;
			}
		}
		converse(Ciphertext);
		string str(Ciphertext.to_string());
		for(i=0;i<8;i++)
		{
			bitset<8> text(str,i*8,8);
			ch=text.to_ulong();
			cout<<ch;
		}
		cout<<endl;
		converse(Ciphertext);
		cout<<endl;
	}
	/* 用DES對密文進行解密操作 */	
	cout<<"開始解密?(Y/N)..."<<endl;
	cin>>ch;
	if(ch=='n') 
	{
		cout<<"Good Bye!"<<endl;
		exit(0);
	}
	DES_Decrypt(Plaintext,Key,Ciphertext);

	/* 解密后輸出 */
	cout<<"得到的原文是:"<<endl;
	if(isInput)
	{
		for(i=0;i<8;i++)
		{
			for(j=0;j<8;j++)
			{
				ch=Plaintext[i*8+j];
				ch<<=1;
			}
		}
		converse(Plaintext);
		string str(Plaintext.to_string());
		for(i=0;i<8;i++)
		{
			bitset<8> text(str,i*8,8);
			ch=text.to_ulong();
			cout<<ch;
		}
		cout<<endl;
	}
	else print64(Plaintext);
};
void useProgram(int flag)
{

	if((flag!=Encrypt)&&(flag!=Decrypt))
	{
		cerr<<"error:unknow parameter!\n";
		exit(0);
	}
	ifstream infile,keyfile;
	ofstream outfile;
	typedef	bitset<8> bits8type;	
	vector<bits8type> text;
	bitset<8> bits8;
	bitset<64> Plaintext,Key,Ciphertext;
	char * filename;
	char ch;
	string str;
	int i,j,CheckParity;
	
	if(flag==Encrypt) filename="plaint.txt";
	else if(flag==Decrypt) filename="cipher.txt";
	infile.open(filename,ios_base::in);
	/* 確認文件是否正確打開 */
	if(!infile)
	{
		cerr<<"error:unable to open input file!\n";
		exit(0);
	}

	/* 從文件讀入明文(或密文)的每個字符并存放到text中 */
	while(!infile.eof())
	{
		infile.get(ch);
		//cout<<"ch="<<ch;
		for(j=0;j<8;j++)
		{
			bits8[7-j]=ch&1;
			ch>>=1;
			
		}		
		text.push_back(bits8);
	}
	infile.close();
	text.pop_back();	

	/*如果字符總數不是8的整數倍,用空字符填充使之成為8的整數倍*/
	int size=text.size()%8;
	if(size!=0)
		for(i=0;i<(8-size%8);i++)
		{
			ch=' ';
			for(j=0;j<8;j++)
			{
				bits8[7-j]=ch&1;
				ch>>=1;
			}		
			text.push_back(bits8);
		}	

	/* 讀入密鑰并加入奇偶校驗位 */
	keyfile.open("key.txt",ios_base::in);
	if(!keyfile)
	{
		cerr<<"error:unable to open input file!\n";
		exit(0);
	}

	for(i=0;i<8;i++)
	{
		keyfile.get(ch);
		for(j=0;j<8;j++)
		{
			if(ch&1)
				Key.set((8-i)*8-(8-j));
			else Key.reset((8-i)*8-(8-j));
			ch>>=1;
		}
		CheckParity=((Key.count()%2==0)?0:1);//奇偶校驗,如果有奇數個1,則奇偶校驗位為1,否則為零
		if(CheckParity) 
			Key.set((8-i)*8-1);
		else Key.reset((8-i)*8-1);
	}	

	/* 打開文件準備輸出 */
	if(flag==Encrypt) filename="cipher.txt";
	else if(flag==Decrypt) filename="new_plaint.txt";
	else
	{
		cerr<<"error:unknow parameter!\n";
	}
	outfile.open(filename,ios_base::out);
	if(!outfile)
	{
		cerr<<"error:unable to open output file!\n";
		exit(0);
	}
	

	/* 分組并加密(解密) */
	int groups=text.size()/8;
	for(i=0;i<groups;i++)
	{
		/* 將第i組加密 */
		for(j=0;j<8;j++)
		{
			for(int k=0;k<8;k++)
			{
				if(flag==Encrypt)
					Plaintext[8*j+k]=text[i*8+j][k];
				else if(flag==Decrypt)
					Ciphertext[8*j+k]=text[i*8+j][k];
			}
		}//end of j
		
		if(flag==Encrypt)
		{
			//cout<<"正在對第"<<i<<"組進行加密..."<<endl;
			DES_Encrypt(Plaintext,Key,Ciphertext);
			converse(Ciphertext);
			str=Ciphertext.to_string();
		}
		else if(flag==Decrypt)	
		{
			//cout<<"正在對第"<<i<<"組進行解密..."<<endl;
			DES_Decrypt(Plaintext,Key,Ciphertext);
			converse(Plaintext);
			str=Plaintext.to_string();		
		}		

		/* 將密文(明文)寫入文件*/

		for(j=0;j<8;j++)
		{
			bitset<8> temp(str,j*8,8);
			ch=temp.to_ulong();			
			outfile.put(ch);			
		}//end of j
	}//end of i
	if(flag==Encrypt)
		cout<<"加密結束,已將密文存入cipher.txt文件中!"<<endl;
	else cout<<"解密結束,已將明文存入new_plaint.txt文件中!"<<endl;
	outfile.close();
};
void main()
{
	char choice;
	string	welcome=
		"////////////////////////////////////////////////////////////////////////////\n"
		"//                                                                        //\n"
		"//=========================歡迎使用DES密碼系統============================//\n"
		"//                                                                        //\n"
		"//說明:從屏幕輸入明文(只能是8個字符)和密鑰請按1;                          //\n"
		"//     從文件讀入明文(長度無限制)和密鑰進行加密請按2;                     //\n" 	
		"//     從文件讀入密文(長度無限制)和密鑰進行解密請按3;                     //\n"                          //\n"
		"//     退出程序請按0;                                                     //\n"
		"//注:  如果從文件讀入,則需要將明文存入in_file.txt文件中,將密鑰存入        //\n"
		"//     key_file.txt文件中,如果解密還需將密文存入文件中.                   //\n"
		"//                                                                        //\n"
		"// 作者:李德 ld80118@sohu.com    版本:1.1  開發日期:2003.4                //\n"
		"////////////////////////////////////////////////////////////////////////////\n" ;
	cout<<welcome;
	do
	{
		cout<<"您的選擇是:";
		cin>>choice;
		switch(choice)
		{
		case'0':exit(0);
		case'1':isdetialprint=true;//將各個步驟進行詳細打印
			testProgram();
			break;
		case'2':useProgram(Encrypt);break;
		case'3':useProgram(Decrypt);break;
		default:cout<<"您的輸入有誤,請重試!"<<endl;
		}
	}while((choice!='0')&&(choice!='1')&&(choice!='2')&&(choice!='3'));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费国产视频网站| 欧美午夜电影一区| av不卡在线观看| 3atv一区二区三区| 国产三级一区二区三区| 免费在线观看一区二区三区| 国产精品一区二区三区乱码| 高清不卡一区二区| 精品剧情在线观看| 亚洲精品欧美综合四区| 粉嫩av一区二区三区| 欧美丰满嫩嫩电影| 亚洲综合一区二区三区| 国产成人综合亚洲网站| 亚洲精品中文在线影院| 精品国产一区a| 久久精品欧美日韩精品| 欧美日韩亚洲综合一区二区三区| 国产老妇另类xxxxx| 欧美亚洲丝袜传媒另类| 91麻豆产精品久久久久久 | 亚洲一二三四在线| 国产成人一区在线| 在线播放欧美女士性生活| 亚洲成人一区二区| 99精品国产91久久久久久| 91福利在线免费观看| 亚洲欧美一区二区在线观看| 国产精品一二三在| wwwwxxxxx欧美| 免费精品99久久国产综合精品| 欧美日韩1234| 亚洲丝袜自拍清纯另类| 国产视频一区不卡| 91蝌蚪国产九色| 中文字幕亚洲电影| 丁香天五香天堂综合| 日本一二三不卡| 国产精品1区二区.| 国产女人水真多18毛片18精品视频 | 91麻豆精品国产91久久久久久久久 | 北岛玲一区二区三区四区| 久久久噜噜噜久久人人看| 久久疯狂做爰流白浆xx| 久久精子c满五个校花| 国产尤物一区二区| 久久久国产精品不卡| 国产精品18久久久久久久久久久久| 精品国产凹凸成av人导航| 免费观看日韩av| 色哟哟一区二区三区| 国产精品久久看| 国产剧情一区二区| 欧美一级欧美一级在线播放| 日本欧洲一区二区| 欧美精品乱码久久久久久按摩| 奇米888四色在线精品| 精品少妇一区二区三区在线播放 | 欧美久久高跟鞋激| 日韩高清电影一区| 日韩欧美黄色影院| 国产精品系列在线播放| 一二三四社区欧美黄| 欧美日韩免费高清一区色橹橹| 久久精品二区亚洲w码| 久久毛片高清国产| 欧美色大人视频| 国产在线播精品第三| 亚洲人成网站在线| 欧美一卡二卡在线观看| 国产大片一区二区| 五月婷婷欧美视频| 精品99久久久久久| 欧美性猛片aaaaaaa做受| 日本麻豆一区二区三区视频| 中文字幕一区在线观看视频| 在线观看一区日韩| 国产精品一区2区| 亚洲一区二区精品3399| 欧美精品少妇一区二区三区| 成人综合婷婷国产精品久久免费| 亚洲猫色日本管| 久久综合九色综合97婷婷| 99国产精品国产精品久久| 日韩av一区二区在线影视| 中文字幕免费不卡| 欧美精品免费视频| 99精品欧美一区二区蜜桃免费 | 精东粉嫩av免费一区二区三区| 国产精品人成在线观看免费| 欧美午夜电影网| www.欧美日韩国产在线| 亚洲综合一区二区| 亚洲精品乱码久久久久久久久| 精品捆绑美女sm三区| 日韩一级在线观看| 色综合夜色一区| 成人性视频免费网站| 日本vs亚洲vs韩国一区三区二区 | 精品日韩一区二区三区| 色中色一区二区| 不卡一区二区中文字幕| 精品一区中文字幕| 麻豆91精品视频| 手机精品视频在线观看| 在线亚洲人成电影网站色www| 成人涩涩免费视频| 久久99精品国产| 天堂蜜桃91精品| 一区二区免费视频| 国产精品传媒入口麻豆| 国产精品久久精品日日| 久久久久国产精品麻豆| 久久精品亚洲国产奇米99| 欧美电影免费观看高清完整版在| 在线电影一区二区三区| 欧美性感一类影片在线播放| 欧美在线制服丝袜| 在线观看不卡视频| 日韩精品一二三四| 免费成人你懂的| 一二三四社区欧美黄| 亚洲自拍另类综合| 亚洲综合在线观看视频| 亚洲第一av色| 日韩和的一区二区| 国产自产v一区二区三区c| 久久精品国产在热久久| 国内精品视频一区二区三区八戒 | 亚洲国产成人av网| 亚洲激情av在线| 亚洲一二三区不卡| 亚洲精品中文字幕在线观看| 一区二区三区在线免费观看| 亚洲国产wwwccc36天堂| 午夜精品久久久久久久99樱桃 | 亚洲猫色日本管| 亚洲情趣在线观看| 日韩电影在线观看一区| 日韩精品一二区| 丁香婷婷综合五月| 91无套直看片红桃| 日韩欧美激情在线| 国产女人aaa级久久久级| 亚洲最大成人综合| 日韩和的一区二区| 波多野结衣中文一区| 欧美在线看片a免费观看| 精品99久久久久久| 中文字幕在线不卡一区二区三区| 婷婷丁香久久五月婷婷| 乱一区二区av| 在线欧美日韩国产| 精品国产乱码久久久久久久| 亚洲视频香蕉人妖| 午夜视频在线观看一区| 成人综合在线观看| 欧美人牲a欧美精品| 日本一区二区三区四区在线视频| 18欧美乱大交hd1984| 看电影不卡的网站| 国产99久久久精品| 欧美一区二区久久| 国产亚洲精品免费| 日日摸夜夜添夜夜添国产精品 | 日本在线播放一区二区三区| 国产酒店精品激情| 7777精品久久久大香线蕉| 国产日韩欧美高清在线| 日本欧美一区二区| 不卡影院免费观看| 国产喂奶挤奶一区二区三区| 亚洲一区二区四区蜜桃| 成人一区二区三区在线观看| 欧美天天综合网| 亚洲你懂的在线视频| 韩国av一区二区三区在线观看| 一本大道久久a久久综合| 精品国产污污免费网站入口| 亚洲一区二区三区四区在线观看| 蜜臀99久久精品久久久久久软件 | 国产精品毛片大码女人| 日韩国产精品久久久久久亚洲| 91在线视频观看| 久久久久久久国产精品影院| 欧美a一区二区| 欧美视频中文一区二区三区在线观看| 国产精品国模大尺度视频| 日韩av一区二区在线影视| 欧美日韩一级片网站| 国产精品初高中害羞小美女文| 国产·精品毛片| 精品久久久网站| 久久 天天综合| 欧美高清性hdvideosex| 视频在线观看91| 欧美视频在线不卡| 午夜视黄欧洲亚洲| 欧美中文字幕一区| 亚洲第四色夜色|