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

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

?? desprocess.cpp

?? C++編寫的DES加密算法
?? CPP
字號:
//DESProcess.cpp:implementation of the DESProcess class.
/////////////////////////////////////////////////////////////////////////////////////////////////
#include "DESProcess.h"
/////////////////////////////////////////////////////////////////////////////////////////////////
//Construction/Destruction
/////////////////////////////////////////////////////////////////////////////////////////////////
DESProcess::DESProcess()
{
}
DESProcess::~DESProcess()
{
}
DESProcess::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;
		pos=pos+28;
		for(cnt2=7;cnt2>=0;cnt2--)
		{
			bts->bit[cnt1*ch.totalchar+cnt2]=(pos%2!=0)?true:false;
			pos/=2;
		}
	}
	bts->totalbit=ch.totalchar*8;
}
DESProcess::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-28);
	}
	ch->totalchar=bts.totalbit/8;
}

DESProcess::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;
		}
	}
}

DESProcess::InitIP(bits bts64,bits *Lbts32,bits *Rbts32)
{
	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;
	Rbts32->totalbit=32;
}

DESProcess::FinalIP(bits Lbts32,bits Rbts32,bits *bts64)
{
	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);
}

DESProcess::leftshift(bits *bit28,int times)
{
	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;
	}
}

DESProcess::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;
}

DESProcess::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);
}

DESProcess::keygen(bits key,bitarray *subkey)
{
	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;
	}
}

DESProcess::etran(bits bts32,bits *bts48)
{
	bitmaping(3,bts32,bts48);
}

DESProcess::bitToSBoxPos(bits bts48,int boxno,int *row,int *col)
{
	*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);
}

DESProcess::sboxtran(bits bts48,bits *bts32)
{
	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;
}

DESProcess::ptran(bits bts32,bits *fout)
{
	bitmaping(4,bts32,fout);
}

DESProcess::ftran(bits inbts32,bits keyi,bits *fRes)
{
	bits bts48,bts32,xorRes48;

	etran(inbts32,&bts48);
	exclusiveOR(bts48,keyi,&xorRes48);
	sboxtran(xorRes48,&bts32);
	ptran(bts32,fRes);
}

DESProcess::exclusiveOR(bits bts1,bits bts2,bits *xorRes)
{
	int cnt;

	xorRes->totalbit=bts1.totalbit;
	for(cnt=0;cnt<bts1.totalbit;cnt++)
		xorRes->bit[cnt]=bts1.bit[cnt]^bts2.bit[cnt];
}

DESProcess::desblock(chars intext8,chars key,bool encode,chars *outtext8)
{
	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);
		exclusiveOR(oldLbts,fRes,&Rbts);
	}
	FinalIP(Rbts,Lbts,&outbts);
	bitstochar(outbts,outtext8);
}

DESProcess::desEncode(char mfile[],char key[],char cfile[])
{
	desCoding(mfile,key,cfile,true);
}

DESProcess::desDecode(char mfile[],char key[],char cfile[])
{
	desCoding(mfile,key,cfile,false);
}

DESProcess::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((mfp=fopen(mfile,"r"))==NULL)
	{cout<<"Cannot open the message file"<<endl;}
	else
	{
	cfp=fopen(cfile,"w");

	cnt1=0;
	inch.ch[cnt1]=fgetc(mfp);
	inch.totalchar=8;
	cnt2=0;
	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);
	}
}

DESProcess::dispfile(char fn[])
{
	FILE *fp;
	char ch;
	if((fp=fopen(fn,"r"))==NULL)
	{cout<<"Cannot open the file to display"<<endl;}
	else
	{
		while(!feof(fp))
		{
			ch=fgetc(fp);
			cout<<ch;
		}
		cout<<endl;
	}
}

float DESProcess::bitdiff(char mfile[],char cfile[],float *bitdiff8byte)
{
	FILE *mfp,*cfp;
	int ttch=0,xorRes,ttbitdiff=0;
	char mch,cch;
	float bdiff=0;

	if((mfp=fopen(mfile,"r"))==NULL)
	{cout<<"Cannot open the file to compare"<<endl;}
	if((cfp=fopen(cfile,"r"))==NULL)
	{cout<<"Cannot open the file to compare"<<endl;}
	else
	{
		while(!feof(mfp)&!feof(cfp))
		{
			ttch++;
			mch=fgetc(mfp);
			cch=fgetc(cfp);
			xorRes=mch^cch;
			ttbitdiff+=(xorRes&1)+(xorRes&2)/2+(xorRes&4)/4+(xorRes&8)/8+(xorRes&16)/16+(xorRes&32)/32+(xorRes&64)/64+(xorRes&128)/128;
		}
		bdiff=float(ttbitdiff)*100/float(ttch*8);
	}
	*bitdiff8byte=float(ttbitdiff)*100/float(8*8);
	return bdiff;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区在线播放| 91免费观看视频在线| 欧美年轻男男videosbes| 亚洲人成网站色在线观看| 成人午夜伦理影院| 国产精品丝袜91| 成人av电影在线网| **性色生活片久久毛片| 97久久超碰国产精品| 国产精品久久久久一区 | 在线免费观看日本欧美| 亚洲欧洲av色图| 欧美影院午夜播放| 午夜精品一区二区三区三上悠亚| 欧美另类久久久品| 美国一区二区三区在线播放| 久久久三级国产网站| 成人深夜在线观看| 一区二区三区在线观看动漫| 88在线观看91蜜桃国自产| 国内精品伊人久久久久av一坑| 国产婷婷一区二区| 91麻豆精东视频| 奇米精品一区二区三区四区 | 久久国产剧场电影| 国产欧美一区二区精品秋霞影院| va亚洲va日韩不卡在线观看| 亚洲精品视频在线看| 日韩一区和二区| 91在线观看下载| 日韩国产高清在线| 国产精品视频一二| 欧美一区二区三区小说| 成人午夜av影视| 男人的天堂久久精品| 中文字幕亚洲不卡| 欧美岛国在线观看| 日本韩国视频一区二区| 国产一区二区在线影院| 亚洲国产wwwccc36天堂| 国产精品蜜臀av| 午夜婷婷国产麻豆精品| 久久精品亚洲麻豆av一区二区| 色av成人天堂桃色av| 国产精品白丝jk白祙喷水网站| 一区二区三区四区视频精品免费| www激情久久| 欧美日韩一二三| 成人h版在线观看| 久久精品国产第一区二区三区| 一区二区三区中文在线观看| 久久一区二区三区四区| 欧美男男青年gay1069videost| 国产成人精品一区二区三区四区 | 人人狠狠综合久久亚洲| 亚洲久草在线视频| 久久久精品影视| 日韩午夜中文字幕| 欧美日韩在线三级| 97se亚洲国产综合在线| 成人手机在线视频| 国产精一区二区三区| 日本aⅴ免费视频一区二区三区| 亚洲激情图片qvod| 亚洲欧洲成人精品av97| 国产欧美一区二区精品忘忧草| 欧美一区二区三区日韩视频| 在线视频一区二区三| 国产99久久精品| 久久精品国产一区二区三区免费看| 亚洲自拍欧美精品| 亚洲桃色在线一区| 国产精品久久久久影院老司| 欧美激情一区二区三区不卡| 久久蜜臀中文字幕| 久久久久国产免费免费| 精品成人佐山爱一区二区| 精品免费一区二区三区| 欧美videos中文字幕| 日韩欧美激情在线| 26uuu精品一区二区| 精品99一区二区| 久久久另类综合| 久久久久久久久久久久久女国产乱 | 日韩一区二区在线看| 这里只有精品视频在线观看| 69成人精品免费视频| 欧美一区二区二区| 欧美va亚洲va在线观看蝴蝶网| 欧美xxxx老人做受| 久久久噜噜噜久久人人看| 国产亚洲精品中文字幕| 久久精品日产第一区二区三区高清版| 亚洲精品在线一区二区| 国产午夜精品一区二区三区嫩草| 久久青草欧美一区二区三区| 国产欧美综合色| 亚洲色图清纯唯美| 午夜久久久影院| 蜜桃视频第一区免费观看| 国产综合久久久久久久久久久久 | 日韩天堂在线观看| 欧美成人女星排名| 久久久亚洲精品一区二区三区 | 国产婷婷色一区二区三区四区| 中文字幕日韩精品一区| 亚洲午夜免费福利视频| 久久国产三级精品| 成人精品国产一区二区4080| 欧美亚洲图片小说| 精品国产一区二区三区av性色| 中文字幕国产一区| 午夜一区二区三区视频| 极品少妇一区二区| 91美女在线看| 日韩一区二区电影在线| 国产精品色噜噜| 丝袜亚洲精品中文字幕一区| 国产一区不卡在线| 欧美色综合网站| 久久女同性恋中文字幕| 亚洲一区在线观看免费| 国产一区 二区 三区一级| 欧美色大人视频| 国产欧美一区二区精品性色| 亚洲大型综合色站| 成人丝袜视频网| 日韩一区二区三区四区五区六区| 国产精品入口麻豆九色| 午夜视频在线观看一区| 99久久久国产精品免费蜜臀| 日韩一区二区三区av| 一区二区三区毛片| 成人性生交大合| 日韩美女主播在线视频一区二区三区| 亚洲少妇30p| 国产一区视频在线看| 3d成人h动漫网站入口| 1024成人网色www| 国产成人精品网址| 日韩一区二区在线看| 亚洲欧美日韩国产中文在线| 国产精品99久久久久| 91精品国产黑色紧身裤美女| 亚洲丝袜另类动漫二区| 国产激情一区二区三区桃花岛亚洲| 欧美日韩一区二区三区在线看| 国产精品乱子久久久久| 国产曰批免费观看久久久| 欧美日韩国产综合一区二区| 亚洲欧美韩国综合色| 成人一级黄色片| 久久精品综合网| 极品少妇一区二区三区精品视频 | 亚洲国产高清aⅴ视频| 美女脱光内衣内裤视频久久网站 | 色噜噜偷拍精品综合在线| 国产欧美日韩不卡| 国产精品一级黄| 亚洲精品一区二区三区精华液 | 91在线精品秘密一区二区| 国产欧美精品在线观看| 狠狠色丁香久久婷婷综合丁香| 欧美精品日韩精品| 亚洲成av人片在www色猫咪| 在线一区二区三区做爰视频网站| 国产精品久久久久久亚洲毛片| 国产成人亚洲综合a∨婷婷图片| 欧美成人伊人久久综合网| 蜜桃免费网站一区二区三区| 欧美色图12p| 日韩成人伦理电影在线观看| 欧美日韩成人综合| 天堂资源在线中文精品| 欧美群妇大交群的观看方式| 日本中文字幕一区二区有限公司| 777色狠狠一区二区三区| 日本不卡123| 精品国产伦一区二区三区观看方式 | 欧美人体做爰大胆视频| 日韩国产精品久久| 欧美成人激情免费网| 国内成+人亚洲+欧美+综合在线| 久久精品视频网| eeuss鲁片一区二区三区在线看| 亚洲天堂2016| 欧美电影在哪看比较好| 美女国产一区二区| 久久久天堂av| 91色九色蝌蚪| 日日夜夜免费精品| 亚洲精品一区二区三区影院 | 中文字幕 久热精品 视频在线| 不卡av在线网| 亚洲国产精品久久不卡毛片| 日韩丝袜情趣美女图片| 成人在线综合网| 亚洲不卡在线观看| 精品精品国产高清a毛片牛牛| 高清av一区二区|