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

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

?? destest.cpp

?? des的完整實現
?? CPP
字號:
#include "DEStest.h"
#include "stdafx.h"


void chartobits(chars ch,bits *bts)                    //字符轉位
{
	int cnt1,cnt2,pos;

	for(cnt1=0;cnt1<ch.totalchar;cnt1++)
	{
		pos=int(ch.ch[cnt1]);
		pos=pos<0?pos+256:pos;		
		for(cnt2=7;cnt2>=0;cnt2--)
		{
			bts->bit[cnt1*ch.totalchar+cnt2]=(pos%2!=0)?true:false;
			pos/=2;
		}
	}
	bts->totalbit=ch.totalchar*8;
}


void bitstochar(bits bts,chars *ch)         //位轉字符
{
	int cnt1,cnt2,pos,power;
	for(cnt1=0;cnt1<8;cnt1++)
	{
		pos=0;
		power=128;
		for(cnt2=0;cnt2<8;cnt2++)
		{
			if(bts.bit[cnt1*8+cnt2])pos+=power;
			power/=2;
		}		
		ch->ch[cnt1]=char(pos);
	}
	ch->totalchar=bts.totalbit/8;
}

void bitmaping(int bitmapno,bits inbts,bits *outbts)        // 映射矩陣選擇進行集中處理
{
	int cnt,mapsize;
	switch(bitmapno)
	{
		case 1:		mapsize=64 ;break;
		case 2:		mapsize=64 ;break;
		case 3:		mapsize=48 ;break;
		case 4:		mapsize=32 ;break;
		case 5:		mapsize=56 ;break;
		case 6:		mapsize=48 ;break;
	}
	outbts->totalbit=mapsize;

	for(cnt=0;cnt<mapsize;cnt++)
	{
		switch(bitmapno)
		{
			case 1:		outbts->bit[cnt]=inbts.bit[ip[cnt]-1];break;
			case 2:		outbts->bit[cnt]=inbts.bit[fp[cnt]-1];break;
			case 3:		outbts->bit[cnt]=inbts.bit[e[cnt]-1];break;
			case 4:		outbts->bit[cnt]=inbts.bit[p[cnt]-1];break;
			case 5:		outbts->bit[cnt]=inbts.bit[pc1[cnt]-1];break;
			case 6:		outbts->bit[cnt]=inbts.bit[pc2[cnt]-1];break;
		}
	}
}

void initIP(bits bts64,bits *Lbts32,bits *Rbts32)       //IP并分割64位明文
{
	int cnt;
	bits tempbts;

	bitmaping(1,bts64,&tempbts);
	for(cnt=0;cnt<32;cnt++)
	{
		Lbts32->bit[cnt]=tempbts.bit[cnt];
		Rbts32->bit[cnt]=tempbts.bit[cnt+32];
	}
	Lbts32->totalbit=32;
	Lbts32->totalbit=32;
}

void finalIP(bits Lbts32,bits Rbts32,bits *bts64)      //FP并將32位明文組合成64位明文
{
	int cnt;
	bits tempbts;
	
	for(cnt=0;cnt<32;cnt++)
	{
		tempbts.bit[cnt]=Lbts32.bit[cnt];
		tempbts.bit[cnt+32]=Rbts32.bit[cnt];
	}
	tempbts.totalbit=64;
	bitmaping(2,tempbts,bts64);
}


void leftshift(bits *bit28,int times)               //左移time位,以低位為左
{
	bool lastbit;
	int cnt1,cnt2;
	for(cnt1=0;cnt1<times;cnt1++)
	{
		lastbit=bit28->bit[0];
		for(cnt2=0;cnt2<bit28->totalbit-1;cnt2++)
		{
			bit28->bit[cnt2]=bit28->bit[cnt2+1];
		}
		bit28->bit[bit28->totalbit-1]=lastbit;
	}
}

void pc1tran(bits bts64,bits *Cbts28,bits *Dbts28)    // 密鑰分解
{
	int cnt;
	bits tempbts;

	bitmaping(5,bts64,&tempbts);
	for(cnt=0;cnt<28;cnt++)
	{
		Cbts28->bit[cnt]=tempbts.bit[cnt];
		Dbts28->bit[cnt]=tempbts.bit[cnt+28];
	}
	Cbts28->totalbit=28;
	Dbts28->totalbit=28;
}

void pc2tran(bits Cbts28, bits Dbts28, bits *Kbts48)     //單輪子密鑰生成
{
	int cnt;
	bits tempbts;

	for(cnt=0;cnt<28;cnt++)
	{
		tempbts.bit[cnt]=Cbts28.bit[cnt];
		tempbts.bit[cnt+28]=Dbts28.bit[cnt];
	}
	tempbts.totalbit=56;
	bitmaping(6,tempbts,Kbts48);
}


void keygen(bits key,bitarray *subkey)   //利用上邊的函數生成16輪加密所需的所有子密鑰
{
	bits Cbts28,Dbts28,Kbts48;
	int cnt;

	pc1tran(key,&Cbts28,&Dbts28);

	for(cnt=0;cnt<16;cnt++)
	{
		leftshift(&Cbts28,ls[cnt]);
		leftshift(&Dbts28,ls[cnt]);
		pc2tran(Cbts28,Dbts28,&Kbts48);
		subkey->bitarr[cnt]=Kbts48;
	}
}


void etran(bits bts32,bits *bts48)  //E擴充(明文由32位擴充為48位)
{
	bitmaping(3,bts32,bts48);
}


void XOR(bits bts1,bits bts2,bits *xorres)
{
	int cnt;
	
	xorres->totalbit=bts2.totalbit;
	for(cnt=0;cnt<bts2.totalbit;cnt++)
	{
		xorres->bit[cnt] = ((bts1.bit[cnt])^(bts2.bit[cnt]));
	}
}


void bittosboxpos(bits bts48,int boxno,int *row,int *col)//S盒的內部映射
{
	*row =(bts48.bit[boxno*6]?2:0)+(bts48.bit[boxno*6+5]?1:0);
	*col =(bts48.bit[boxno*6+1]?8:0)+(bts48.bit[boxno*6+2]?4:0)+(bts48.bit[boxno*6+3]?2:0)+(bts48.bit[boxno*6+4]?1:0);
}


void sboxtran(bits bts48,bits *bts32)//明文由48位代換為32位
{
	int cnt1,cnt2,row,col,boxout;

	for(cnt1=0;cnt1<8;cnt1++)
	{
		bittosboxpos(bts48,cnt1,&row,&col);
		boxout= sbox[cnt1][row*16+col];
		for(cnt2 =3;cnt2>=0;cnt2--)          
		{
			bts32->bit[cnt1*4+cnt2]=(boxout%2!=0)?true:false;
			boxout/=2;
		}
	}
	bts32->totalbit =32;
}

void ptran(bits bts32,bits *fout) //P置換
{
	bitmaping(4,bts32,fout);
}

void ftran(bits inbts32,bits keyi,bits *fres)   //完成一輪DES加密的4個主要步驟
{
	bits bts48,bts32,xorres48;

	etran(inbts32,&bts48);   //經第一、二輪測試 etran能夠正確得到結果
	XOR(bts48,keyi,&xorres48);//經第一、二輪測試 XOR可以得到正確結果
	sboxtran(xorres48,&bts32);//經第一、二輪測試 sbox可以得到正確結果
	ptran(bts32,fres);//經第一、二輪測試 ptran可以得到正確結果
}


void desblock(chars intext8,chars key,bool encode,chars *outtext8) //DES加密算法加密一組數據的全過程
{
	int cnt,keypos;
	bits inbts,Lbts,Rbts,oldLbts;
	bits keybit,outbts,fres;
	bitarray subkey;

	chartobits(intext8,&inbts);
	chartobits(key,&keybit);
	keygen(keybit,&subkey);

	initIP(inbts,&Lbts,&Rbts);
	for(cnt=0;cnt<16;cnt++)
	{
		oldLbts=Lbts;
		Lbts=Rbts;
		keypos=encode?cnt:(15-cnt);
		ftran(Rbts,subkey.bitarr[keypos],&fres);
		XOR(oldLbts,fres,&Rbts);
	}
	finalIP(Rbts,Lbts,&outbts);
	bitstochar(outbts,outtext8);
}


void desencode(char mfile[],char key[],char cfile[])//加密
{
	descoding(mfile,key,cfile,true);
	//printf("out of encode\n");
}


void desdecode(char mfile[],char key[],char cfile[])//解密
{
	descoding(mfile,key,cfile,false);
}


void descoding(char mfile[],char key[],char cfile[],bool codedir)//從明文文件讀入明文,加密后寫入密文文件中
{
	int cnt1,cnt2;
	chars inch,inkey,outch;
	FILE *mfp;
	FILE *cfp;

	for(cnt1=0;cnt1<8;cnt1++)//讀密鑰
	{
		inkey.ch[cnt1]=key[cnt1];
	}
	inkey.totalchar=8;

	if(NULL==(mfp=fopen(mfile,"r")))//打開明文文件
	{
		printf("CAN'T OPEN THE ORIGIN FILE\n");
	}
	else
	{
		if(NULL==(cfp=fopen(cfile,"w")))
		{
			printf("CAN'T OPEN THE SECRET FILE\n");
		}					

		cnt1=0;
		cnt2=0;		
		inch.totalchar=8;
		inch.ch[cnt1]=fgetc(mfp);		

		while(!feof(mfp))
		{
			cnt1++;
			cnt2++;
			inch.ch[cnt1]=fgetc(mfp);
			if(cnt1==7)
			{
				desblock(inch,inkey,codedir,&outch);
				for(cnt1=0;cnt1<8;cnt1++)
					fputc(outch.ch[cnt1],cfp);//寫密文文件
				cnt1=-1;
			}
		}
		cnt2=cnt2%8;
		if(cnt2!=0)//分組對齊
		{
			for(cnt1=0;cnt1<(8-cnt2);cnt1++)
				inch.ch[cnt1+cnt2]=' ';
			inch.totalchar=8;
			desblock(inch,inkey,codedir,&outch);

			for(cnt1=0;cnt1<8;cnt1++)
				fputc(outch.ch[cnt1],cfp);
		}
		fclose(mfp);
		fclose(cfp);
	}
}

void dispfile(char fn[])    //顯示文件內容
{
	FILE *fp;
	char ch;
	if(NULL==(fp=fopen(fn,"r")))
	{
		printf("CAN'T OPEN THE FILE TO DISPLAY\n");
	}
	else
	{
		while(!feof(fp))
		{
			ch=fgetc(fp);
			printf("%c",ch);
		}
		printf("\n");
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频免费播放| 99久久综合国产精品| 日本亚洲一区二区| 日本aⅴ免费视频一区二区三区| 亚洲国产成人高清精品| 婷婷开心激情综合| 美女脱光内衣内裤视频久久影院| 久久69国产一区二区蜜臀| 国产成人在线色| av在线播放不卡| 欧美三区在线视频| 精品国产一二三| 日韩一区中文字幕| 亚洲最大成人综合| 日本va欧美va瓶| 成人综合婷婷国产精品久久蜜臀| 99综合电影在线视频| 欧美人动与zoxxxx乱| 国产日韩一级二级三级| 成人免费视频一区| 91久久精品国产91性色tv| 丁香婷婷综合网| 在线视频一区二区免费| 欧美日韩成人一区| 精品国产乱码久久久久久闺蜜| 国产午夜精品久久久久久免费视 | 中文字幕亚洲不卡| 三级成人在线视频| 成人免费看的视频| 欧美福利视频导航| 亚洲欧洲一区二区三区| 五月婷婷久久丁香| 99久久99久久免费精品蜜臀| 欧美精品一二三四| 久久久不卡网国产精品一区| 亚洲激情图片一区| 国产精品一二三区在线| 欧美日韩一级大片网址| 精品国产成人在线影院| 一区二区三区波多野结衣在线观看 | 成人一级片网址| 丁香啪啪综合成人亚洲小说 | 26uuu久久天堂性欧美| 日本一区二区视频在线| 午夜一区二区三区在线观看| 国产91丝袜在线观看| 精品国产sm最大网站| 秋霞影院一区二区| 欧美日韩高清一区二区不卡| 一区二区三区在线观看动漫| 99久久精品免费精品国产| 国产片一区二区三区| 国产在线播精品第三| 日韩欧美国产一区在线观看| 五月天精品一区二区三区| 欧美在线综合视频| 夜夜亚洲天天久久| 欧美亚洲一区二区在线观看| 日韩理论片一区二区| 白白色亚洲国产精品| 中文文精品字幕一区二区| 国产一区二区精品久久| 欧美精品一区二区三| 美日韩一区二区三区| 欧美一级黄色录像| 裸体歌舞表演一区二区| 日韩一区二区三区三四区视频在线观看| 亚洲国产一区二区在线播放| 日本欧美久久久久免费播放网| 在线成人免费视频| 国产一区二区伦理| 久久久久久免费| 国产中文字幕精品| www国产精品av| 精品国产亚洲在线| 久久精品99国产精品| 日韩精品一区二区三区视频播放| 蜜桃av一区二区在线观看| 日韩女同互慰一区二区| 国内成人精品2018免费看| 久久日韩粉嫩一区二区三区| 国产成人aaa| 亚洲欧美日韩一区| 欧美在线一二三四区| 五月婷婷欧美视频| 精品国产一区二区三区久久影院| 国产一区二区剧情av在线| 国产精品久久国产精麻豆99网站| 91色|porny| 日韩黄色片在线观看| 精品国产一区二区三区四区四| 国产成人无遮挡在线视频| 中文成人综合网| 欧美色综合久久| 免费观看一级特黄欧美大片| 精品国产在天天线2019| 大尺度一区二区| 亚洲一区免费视频| 欧美一级日韩免费不卡| 国产成人精品亚洲777人妖| 亚洲乱码国产乱码精品精可以看 | 曰韩精品一区二区| 欧美麻豆精品久久久久久| 激情文学综合丁香| 亚洲四区在线观看| 91精品国产综合久久精品app| 国内精品在线播放| 亚洲日本乱码在线观看| 欧美一区二区视频在线观看2022| 久草这里只有精品视频| 亚洲天堂网中文字| 欧美一级免费大片| www.日韩av| 喷水一区二区三区| 国产精品私人影院| 欧美一区二区三区系列电影| 成人免费av在线| 午夜精品久久一牛影视| 国产精品女主播av| 在线播放视频一区| 91在线免费播放| 久久99精品久久久久久动态图 | 欧美性高清videossexo| 精品一区二区三区免费播放| 国产精品污污网站在线观看| 亚洲国产精品视频| 欧美国产乱子伦| 日韩欧美在线1卡| 在线亚洲精品福利网址导航| 国产精品资源站在线| 亚洲午夜电影网| 国产精品美女久久久久av爽李琼 | 热久久久久久久| 亚洲男人电影天堂| 久久久久久夜精品精品免费| 在线看不卡av| 波多野结衣精品在线| 久久成人免费电影| 亚洲国产日韩一级| 亚洲欧洲av一区二区三区久久| 日韩免费看的电影| 欧美日韩精品一区二区| av电影在线观看一区| 黄色日韩网站视频| 日本亚洲欧美天堂免费| 亚洲一区二区三区四区五区黄| 国产精品人人做人人爽人人添| 欧美videos大乳护士334| 欧美午夜电影在线播放| av午夜一区麻豆| 国产精品综合视频| 精品伊人久久久久7777人| 天天影视色香欲综合网老头| 亚洲少妇屁股交4| 国产精品久久久久影院亚瑟| 久久天天做天天爱综合色| 日韩欧美国产系列| 在线综合视频播放| 欧美日高清视频| 91精品福利视频| 99re这里只有精品6| 国产成人午夜99999| 国产精品资源网| 国内精品第一页| 激情欧美日韩一区二区| 日本亚洲一区二区| 男人操女人的视频在线观看欧美| 亚洲国产欧美在线| 亚洲第一会所有码转帖| 亚洲小说欧美激情另类| 亚洲一区二区三区四区的| 一区二区三区电影在线播| 一区二区三区欧美亚洲| 亚洲色图欧洲色图| 亚洲精品综合在线| 夜夜操天天操亚洲| 亚洲国产精品久久久久婷婷884| 亚洲免费大片在线观看| 一区二区三区四区av| 亚洲综合视频在线观看| 夜夜嗨av一区二区三区中文字幕| 亚洲激情自拍视频| 亚洲国产成人av网| 午夜视频一区二区三区| 奇米888四色在线精品| 麻豆国产一区二区| 国产一区二区在线看| 粉嫩av一区二区三区| 成人一区在线观看| 色综合久久久久久久久| 欧美亚洲综合一区| 91精品国产福利| 欧美xxxx老人做受| 国产精品无人区| 亚洲精品免费电影| 五月婷婷色综合| 经典三级一区二区| 国产一区二区伦理| av高清久久久| 欧美日韩成人高清|