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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 3des.cpp

?? 實現(xiàn)DES加密解密算法
?? CPP
字號:
#include "stdafx.h"
#include "3DES.h"

void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
{
	register DES_LONG l,r,t,u;
#ifdef DES_PTR
	register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
#endif
#ifndef DES_UNROLL
	register int i;
#endif
	register DES_LONG *s;

	r=data[0];
	l=data[1];

	r=ROTATE(r,29)&0xffffffffL;
	l=ROTATE(l,29)&0xffffffffL;

	s=ks->ks->deslong;
	/* I don't know if it is worth the effort of loop unrolling the
	* inner loop */
	if (enc)
	{
#ifdef DES_UNROLL
		D_ENCRYPT(l,r, 0); /*  1 */
		D_ENCRYPT(r,l, 2); /*  2 */
		D_ENCRYPT(l,r, 4); /*  3 */
		D_ENCRYPT(r,l, 6); /*  4 */
		D_ENCRYPT(l,r, 8); /*  5 */
		D_ENCRYPT(r,l,10); /*  6 */
		D_ENCRYPT(l,r,12); /*  7 */
		D_ENCRYPT(r,l,14); /*  8 */
		D_ENCRYPT(l,r,16); /*  9 */
		D_ENCRYPT(r,l,18); /*  10 */
		D_ENCRYPT(l,r,20); /*  11 */
		D_ENCRYPT(r,l,22); /*  12 */
		D_ENCRYPT(l,r,24); /*  13 */
		D_ENCRYPT(r,l,26); /*  14 */
		D_ENCRYPT(l,r,28); /*  15 */
		D_ENCRYPT(r,l,30); /*  16 */
#else
		for (i=0; i<32; i+=8)
		{
			D_ENCRYPT(l,r,i+0); /*  1 */
			D_ENCRYPT(r,l,i+2); /*  2 */
			D_ENCRYPT(l,r,i+4); /*  3 */
			D_ENCRYPT(r,l,i+6); /*  4 */
		}
#endif
	}
	else
	{
#ifdef DES_UNROLL
		D_ENCRYPT(l,r,30); /* 16 */
		D_ENCRYPT(r,l,28); /* 15 */
		D_ENCRYPT(l,r,26); /* 14 */
		D_ENCRYPT(r,l,24); /* 13 */
		D_ENCRYPT(l,r,22); /* 12 */
		D_ENCRYPT(r,l,20); /* 11 */
		D_ENCRYPT(l,r,18); /* 10 */
		D_ENCRYPT(r,l,16); /*  9 */
		D_ENCRYPT(l,r,14); /*  8 */
		D_ENCRYPT(r,l,12); /*  7 */
		D_ENCRYPT(l,r,10); /*  6 */
		D_ENCRYPT(r,l, 8); /*  5 */
		D_ENCRYPT(l,r, 6); /*  4 */
		D_ENCRYPT(r,l, 4); /*  3 */
		D_ENCRYPT(l,r, 2); /*  2 */
		D_ENCRYPT(r,l, 0); /*  1 */
#else
		for (i=30; i>0; i-=8)
		{
			D_ENCRYPT(l,r,i-0); /* 16 */
			D_ENCRYPT(r,l,i-2); /* 15 */
			D_ENCRYPT(l,r,i-4); /* 14 */
			D_ENCRYPT(r,l,i-6); /* 13 */
		}
#endif
	}
	/* rotate and clear the top bits on machines with 8byte longs */
	data[0]=ROTATE(l,3)&0xffffffffL;
	data[1]=ROTATE(r,3)&0xffffffffL;
	l=r=t=u=0;
}

void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
				  DES_key_schedule *ks2, DES_key_schedule *ks3)
{
	register DES_LONG l,r;

	l=data[0];
	r=data[1];
	IP(l,r);
	data[0]=l;
	data[1]=r;
	DES_encrypt2((DES_LONG *)data,ks1,DES_ENCRYPT);
	DES_encrypt2((DES_LONG *)data,ks2,DES_DECRYPT);
	DES_encrypt2((DES_LONG *)data,ks3,DES_ENCRYPT);
	l=data[0];
	r=data[1];
	FP(r,l);
	data[0]=l;
	data[1]=r;
}

void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
				  DES_key_schedule *ks2, DES_key_schedule *ks3)
{
	register DES_LONG l,r;

	l=data[0];
	r=data[1];
	IP(l,r);
	data[0]=l;
	data[1]=r;
	DES_encrypt2((DES_LONG *)data,ks3,DES_DECRYPT);
	DES_encrypt2((DES_LONG *)data,ks2,DES_ENCRYPT);
	DES_encrypt2((DES_LONG *)data,ks1,DES_DECRYPT);
	l=data[0];
	r=data[1];
	FP(r,l);
	data[0]=l;
	data[1]=r;
}


void DES_set_odd_parity(DES_cblock *key)
{
	int i;

	for (i=0; i<DES_KEY_SZ; i++)
		(*key)[i]=odd_parity[(*key)[i]];
}

int DES_check_key_parity(const_DES_cblock *key)
{
	int i;

	for (i=0; i<DES_KEY_SZ; i++)
	{
		if ((*key)[i] != odd_parity[(*key)[i]])
			return(0);
	}
	return(1);
}


int DES_is_weak_key(const_DES_cblock *key)
{
	int i;

	for (i=0; i<NUM_WEAK_KEY; i++)
		if (memcmp(weak_keys[i],key,sizeof(DES_cblock)) == 0) return(1);
	return(0);
}


void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
{
	static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
	register DES_LONG c,d,t,s,t2;
	register const unsigned char *in;
	register DES_LONG *k;
	register int i;

#ifdef OPENBSD_DEV_CRYPTO
	memcpy(schedule->key,key,sizeof schedule->key);
	schedule->session=NULL;
#endif
	k = &schedule->ks->deslong[0];
	in = &(*key)[0];

	c2l(in,c);
	c2l(in,d);

	PERM_OP (d,c,t,4,0x0f0f0f0fL);
	HPERM_OP(c,t,-2,0xcccc0000L);
	HPERM_OP(d,t,-2,0xcccc0000L);
	PERM_OP (d,c,t,1,0x55555555L);
	PERM_OP (c,d,t,8,0x00ff00ffL);
	PERM_OP (d,c,t,1,0x55555555L);
	d=	(((d&0x000000ffL)<<16L)| (d&0x0000ff00L)     |
		((d&0x00ff0000L)>>16L)|((c&0xf0000000L)>>4L));
	c&=0x0fffffffL;

	for (i=0; i<ITERATIONS; i++)
	{
		if (shifts2[i])
		{ c=((c>>2L)|(c<<26L)); d=((d>>2L)|(d<<26L)); }
		else
		{ c=((c>>1L)|(c<<27L)); d=((d>>1L)|(d<<27L)); }
		c&=0x0fffffffL;
		d&=0x0fffffffL;
		s=	des_skb[0][ (c    )&0x3f                ]|
			des_skb[1][((c>> 6L)&0x03)|((c>> 7L)&0x3c)]|
			des_skb[2][((c>>13L)&0x0f)|((c>>14L)&0x30)]|
			des_skb[3][((c>>20L)&0x01)|((c>>21L)&0x06) |
			((c>>22L)&0x38)];
		t=	des_skb[4][ (d    )&0x3f                ]|
			des_skb[5][((d>> 7L)&0x03)|((d>> 8L)&0x3c)]|
			des_skb[6][ (d>>15L)&0x3f                ]|
			des_skb[7][((d>>21L)&0x0f)|((d>>22L)&0x30)];

		/* table contained 0213 4657 */
		t2=((t<<16L)|(s&0x0000ffffL))&0xffffffffL;
		*(k++)=ROTATE(t2,30)&0xffffffffL;

		t2=((s>>16L)|(t&0xffff0000L));
		*(k++)=ROTATE(t2,26)&0xffffffffL;
	}
}

int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
{
	if (!DES_check_key_parity(key))
		return(-1);
	if (DES_is_weak_key(key))
		return(-2);
	DES_set_key_unchecked(key, schedule);
	return 0;
}


int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule)
{
	if (false)
	{
		return DES_set_key_checked(key, schedule);
	}
	else
	{
		DES_set_key_unchecked(key, schedule);
		return 0;
	}
}

int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule)
{
	return(DES_set_key(key,schedule));
}

void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
					  DES_key_schedule *ks1, DES_key_schedule *ks2,
					  DES_key_schedule *ks3,
					  int enc)
{
	register DES_LONG l0,l1;
	DES_LONG ll[2];
	const unsigned char *in = &(*input)[0];
	unsigned char *out = &(*output)[0];

	c2l(in,l0);
	c2l(in,l1);
	ll[0]=l0;
	ll[1]=l1;
	if (enc)
		DES_encrypt3(ll,ks1,ks2,ks3);
	else
		DES_decrypt3(ll,ks1,ks2,ks3);
	l0=ll[0];
	l1=ll[1];
	l2c(l0,out);
	l2c(l1,out);
}
/////////////////////////////////////加解密函數(shù)///////////////////////////
void EncryptLastBytes(char* inBuffer, unsigned int  inLen, char* outBuffer )
{
	char index[ 7 ][ 8 ] = 
	{ { 0x04 , 0x06 , 0x01 , 0x02 , 0x00 , 0x03 , 0x07 , 0x05 },
	  { 0x01 , 0x05 , 0x04 , 0x00 , 0x07 , 0x03 , 0x06 , 0x02 },
	  { 0x06 , 0x03 , 0x05 , 0x07 , 0x01 , 0x02 , 0x00 , 0x04 },
	  { 0x07 , 0x03 , 0x00 , 0x04 , 0x06 , 0x01 , 0x05 , 0x02 },
	  { 0x03 , 0x07 , 0x01 , 0x05 , 0x04 , 0x02 , 0x06 , 0x00 },
	  { 0x04 , 0x07 , 0x06 , 0x00 , 0x02 , 0x03 , 0x05 , 0x01 },
	  { 0x03 , 0x05 , 0x01 , 0x04 , 0x02 , 0x00 , 0x07 , 0x06 }};

     if ( inLen <=0 || inLen >7 ) return;

	 char a,b,c,d,e,f,g,h;
	 a = b = c = d = e = f = g = h = 0;
	 char result = 0;

	 memcpy(outBuffer,inBuffer,inLen);

	 for (unsigned int i = 0; i < inLen; i++)
	 {
		 a = ( outBuffer[ i ] & 0x01) << index[ i ][ 0 ];
		 b = ((outBuffer[ i ] & 0x02) >> 1) << index[ i ][ 1 ];
		 c = ((outBuffer[ i ] & 0x04) >> 2) << index[ i ][ 2 ];
		 d = ((outBuffer[ i ] & 0x08) >> 3) << index[ i ][ 3 ];
		 e = ((outBuffer[ i ] & 0x10) >> 4) << index[ i ][ 4 ];
		 f = ((outBuffer[ i ] & 0x20) >> 5) << index[ i ][ 5 ];
		 g = ((outBuffer[ i ] & 0x40) >> 6) << index[ i ][ 6 ];
		 h = ((outBuffer[ i ] & 0x80) >> 7) << index[ i ][ 7 ];
         
         result = (((((((a | b) | c) | d) | e) | f) | g) | h);
         result ^= 0x96; 
         
         outBuffer[ i ] = result;
	 }

}

void DecryptLastBytes(char* inBuffer, unsigned int  inLen, char* outBuffer )
{
	char tempInBuf[ 7 ];	
	//因為原數(shù)據(jù)不可寫,所以需要轉(zhuǎn)存到副本里面
	memcpy(tempInBuf, inBuffer, inLen);

	char index[ 7 ][ 8 ] = 
	{ { 0x04 , 0x02 , 0x03 , 0x05 , 0x00 , 0x07 , 0x01 , 0x06 },
	  { 0x03 , 0x00 , 0x07 , 0x05 , 0x02 , 0x01 , 0x06 , 0x04 },
      { 0x06 , 0x04 , 0x05 , 0x01 , 0x07 , 0x02 , 0x00 , 0x03 },
	  { 0x02 , 0x05 , 0x07 , 0x01 , 0x03 , 0x06 , 0x04 , 0x00 },
	  { 0x07 , 0x02 , 0x05 , 0x00 , 0x04 , 0x03 , 0x06 , 0x01 },
	  { 0x03 , 0x07 , 0x04 , 0x05 , 0x00 , 0x06 , 0x02 , 0x01 },
	  { 0x05 , 0x02 , 0x04 , 0x00 , 0x03 , 0x01 , 0x07 , 0x06 }
	};

     if ( inLen <=0 || inLen >7 ) return;

	 char a,b,c,d,e,f,g,h;
	 a = b = c = d = e = f = g = h = 0;
	 char result = 0;

	 for (unsigned int i = 0; i < inLen; i++)
	 {
         tempInBuf[ i ] ^= 0x96; 

		 a = ( tempInBuf[ i ] & 0x01) << index[ i ][ 0 ];
		 b = ((tempInBuf[ i ] & 0x02) >> 1) << index[ i ][ 1 ];
		 c = ((tempInBuf[ i ] & 0x04) >> 2) << index[ i ][ 2 ];
		 d = ((tempInBuf[ i ] & 0x08) >> 3) << index[ i ][ 3 ];
		 e = ((tempInBuf[ i ] & 0x10) >> 4) << index[ i ][ 4 ];
		 f = ((tempInBuf[ i ] & 0x20) >> 5) << index[ i ][ 5 ];
		 g = ((tempInBuf[ i ] & 0x40) >> 6) << index[ i ][ 6 ];
		 h = ((tempInBuf[ i ] & 0x80) >> 7) << index[ i ][ 7 ];
         
         result = (((((((a | b) | c) | d) | e) | f) | g) | h);
         
         outBuffer[ i ] = result;
	 }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国v欧美v日本v亚洲v| 亚洲成人免费av| 日韩视频免费观看高清完整版| 99综合电影在线视频| 国产乱码精品一区二区三| 亚洲18色成人| 日韩国产欧美在线视频| 日韩电影在线免费看| 婷婷成人综合网| 麻豆国产精品视频| 免费在线欧美视频| 久久国产夜色精品鲁鲁99| 狠狠色狠狠色综合系列| 精品一区二区三区视频在线观看| 另类中文字幕网| 精品一区二区三区欧美| 国产成人av电影免费在线观看| 国产乱人伦偷精品视频不卡| 成人中文字幕合集| av一区二区久久| 欧美体内she精视频| 欧美日韩国产天堂| 久久看人人爽人人| 国产精品国产自产拍在线| 一区二区高清视频在线观看| 日韩精品视频网站| 国产精品亚洲第一| 欧美午夜电影一区| 精品国产一二三| 专区另类欧美日韩| 日韩va欧美va亚洲va久久| 精品在线播放免费| 色悠悠亚洲一区二区| 51午夜精品国产| 久久精子c满五个校花| 亚洲精品国久久99热| 蜜乳av一区二区| av在线不卡网| 欧美精品一区二区高清在线观看| 欧美国产视频在线| 日韩主播视频在线| yourporn久久国产精品| 欧美一区二区视频在线观看| 久久久青草青青国产亚洲免观| 有码一区二区三区| 国产在线精品视频| 精品视频一区 二区 三区| 国产亚洲精久久久久久| 亚洲bdsm女犯bdsm网站| 国产成人综合视频| 91视频免费看| 欧美高清激情brazzers| 国产色产综合产在线视频| 亚洲一区二区欧美| 粉嫩aⅴ一区二区三区四区| 欧美日本国产视频| 中文字幕制服丝袜成人av| 免费人成在线不卡| 欧美性受极品xxxx喷水| 日本一区二区三区dvd视频在线| 亚洲在线免费播放| www.日韩在线| 国产亚洲福利社区一区| 久久99精品网久久| 欧美丝袜自拍制服另类| 亚洲人成影院在线观看| 国产.欧美.日韩| 欧美精品一区二区三区视频| 丝袜脚交一区二区| 欧美无砖专区一中文字| 亚洲激情五月婷婷| 91麻豆文化传媒在线观看| 国产精品视频第一区| 国产高清不卡二三区| 26uuu色噜噜精品一区| 久久精品国产99国产| 欧美一级在线视频| 蜜臀va亚洲va欧美va天堂| 91.xcao| 国产成人综合在线| 久久久噜噜噜久久人人看| 美女高潮久久久| 精品国产乱码久久久久久图片| 日本亚洲三级在线| 精品理论电影在线观看| 韩国三级电影一区二区| 久久久精品综合| 国产成人午夜视频| 国产精品网站在线播放| 91同城在线观看| 亚洲一区二区精品久久av| 欧美日韩高清不卡| 另类调教123区| 久久久久久久性| 不卡的看片网站| 亚洲一区中文在线| 日韩三级免费观看| 国产在线精品不卡| 亚洲婷婷综合久久一本伊一区| 色哟哟精品一区| 日韩电影在线免费| 久久久国产综合精品女国产盗摄| 丁香网亚洲国际| 一区二区在线免费观看| 91精品黄色片免费大全| 国产另类ts人妖一区二区| 亚洲欧美乱综合| 欧美一区二区高清| 成人av免费在线观看| 亚洲国产精品综合小说图片区| 日韩一区二区三区电影在线观看| 国产精品资源在线看| 亚洲一区视频在线| 久久久久青草大香线综合精品| 91首页免费视频| 日本成人在线视频网站| 日韩国产欧美在线视频| 国产精品三级av| 337p亚洲精品色噜噜噜| 国产精品1区2区| 婷婷国产在线综合| 亚洲丝袜精品丝袜在线| 日韩午夜在线播放| 色www精品视频在线观看| 麻豆91精品视频| 一区二区欧美视频| 国产日本欧美一区二区| 欧美日韩一区二区三区免费看| 国产91富婆露脸刺激对白| 免费av成人在线| 亚洲蜜桃精久久久久久久| 久久久综合激的五月天| 欧美精品自拍偷拍| 色综合久久中文字幕综合网| 国产精品一级在线| 久久精工是国产品牌吗| 亚洲电影一区二区| 亚洲视频一区二区在线| 国产亚洲污的网站| 欧美一区永久视频免费观看| 色视频一区二区| 99久久国产综合精品麻豆| 国内成人自拍视频| 久久99国产精品麻豆| 丝袜诱惑制服诱惑色一区在线观看 | 日韩欧美国产精品一区| 91国产丝袜在线播放| 成人激情动漫在线观看| 国产一区二区免费在线| 韩国精品一区二区| 狠狠色丁香九九婷婷综合五月| 婷婷久久综合九色国产成人| 亚洲1区2区3区视频| 一区二区三区在线看| 亚洲免费观看高清完整版在线 | 亚洲午夜一区二区| 亚洲欧美激情在线| 国产精品免费久久久久| 欧美国产乱子伦| 国产精品天美传媒沈樵| 国产精品欧美久久久久一区二区| 国产网站一区二区| 欧美国产综合色视频| 国产精品嫩草99a| 国产精品的网站| 亚洲视频中文字幕| 亚洲精品国产第一综合99久久| 一区二区三区四区不卡视频| 国产精品综合一区二区| 粉嫩嫩av羞羞动漫久久久| 风间由美一区二区三区在线观看| 国产91精品一区二区| 色综合久久久久网| 欧美美女激情18p| 日韩一区二区在线免费观看| 欧美精品一区在线观看| 中文一区二区在线观看| 亚洲精品精品亚洲| 午夜国产不卡在线观看视频| 久久爱www久久做| 成人午夜视频免费看| 91福利视频网站| 日韩一级高清毛片| 亚洲国产精品激情在线观看| 亚洲精品视频在线| 奇米亚洲午夜久久精品| 国产91对白在线观看九色| 欧美亚州韩日在线看免费版国语版| 69久久99精品久久久久婷婷| 久久精子c满五个校花| 亚洲精品大片www| 久久国产剧场电影| 色综合色狠狠综合色| 欧美高清视频一二三区 | 欧美性受极品xxxx喷水| 久久免费午夜影院| 亚洲成人综合视频| 国产成人免费在线| 91精品国产综合久久福利软件| 国产精品免费网站在线观看|