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

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

?? d3des2.c

?? s
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include "d3des.h"

static void scrunch(unsigned char *, unsigned long *);
static void unscrun(unsigned long *, unsigned char *);
static void desfunc(unsigned long *, unsigned long *);
static void cookey(unsigned long *);

static unsigned long KnL[32] = { 0L };
static unsigned long KnR[32] = { 0L };
static unsigned long Kn3[32] = { 0L };
static unsigned char Df_Key[24] = {
	0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
	0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10,
	0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67 };

static unsigned short bytebit[8]	= {
	0200, 0100, 040, 020, 010, 04, 02, 01 };

static unsigned long bigbyte[24] = {
	0x800000L,	0x400000L,	0x200000L,	0x100000L,
	0x80000L,	0x40000L,	0x20000L,	0x10000L,
	0x8000L,	0x4000L,	0x2000L,	0x1000L,
	0x800L, 	0x400L, 	0x200L, 	0x100L,
	0x80L,		0x40L,		0x20L,		0x10L,
	0x8L,		0x4L,		0x2L,		0x1L	};

/* Use the key schedule specified in the Standard (ANSI X3.92-1981). */

static unsigned char pc1[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 };

static unsigned char totrot[16] = {
	1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28 };

static unsigned char pc2[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 deskey(key, edf)	
unsigned char *key;
short edf;
{
	register int i, j, l, m, n;
	unsigned char pc1m[56], pcr[56];
	unsigned long kn[32];
              /*******************************************************************/
              //key為八位的 數組,如key[8]="abcedfgh",8等于2的3次冪,而每一個字節也是八位,同樣8等于2的3次冪
              //所以所有64位只需6位下標就可以全部標識。
              //高三位下標確定是key中的哪一個字符,低三位確定是字符中的哪一位。
              /**********************************************************************************/
	for ( j = 0; j < 56; j++ ) {
		l = pc1[j];//for example l=56 when j=0;
		m = l & 07;  //m為低三位
		pc1m[j] = (key[l >> 3] & bytebit[m]) ? 1 : 0;
		//l>>3確定高三位,bytebit[m]確定要置換的哪一位,兩數"與"即為置換。
		}               
	for( i = 0; i < 16; i++ ) {
		if( edf == DE1 ) m = (15 - i) << 1;
		else m = i << 1;
		n = m + 1;
		kn[m] = kn[n] = 0L;
		for( j = 0; j < 28; j++ ) { 
		    //實現循環右移對應位數的操作,前28位作為一個集合。
		    //totrot[i]決定循環右移的位數
			l = j + totrot[i];//if j=0 then l= 0+1 =1 
			                  //if j=27, then l=27+1=28			                   
			if( l < 28 ) pcr[j] = pc1m[l];
			else pcr[j] = pc1m[l - 28];
			}
		for( j = 28; j < 56; j++ ) {
		//實現循環右移對應位數的操作,后28位作為一個集合。
		    l = j + totrot[i];
		    if( l < 56 ) pcr[j] = pc1m[l];
		    else pcr[j] = pc1m[l - 28];
		    }
		for( j = 0; j < 24; j++ ) {
		    //此為一個置換,最終是把56位置換成48位;如果置換后的那一位為1,則密鑰中相應的位置1,共形成兩個24位的密鑰
			if( pcr[pc2[j]] ) kn[m] |= bigbyte[j];
			if( pcr[pc2[j+24]] ) kn[n] |= bigbyte[j];
			}
		}
		//到目前為止形成了32個單元的數組,每個單元如:0X00FFFFFF的形式(此值代表32的long型中只有后24位存放有效數字)
	
	//cookey的最終目的是把兩個0x00ffffff形式的long型值變成兩個0x3f3f3f3f形式的long型值,即把集中存放的key值分散開來放。
	cookey(kn);
	return;
	}

static void cookey(raw1)
register unsigned long *raw1;
{
	register unsigned long *cook, *raw0;
	unsigned long dough[32];
	register int i;

	cook = dough;
	for( i = 0; i < 16; i++, raw1++ ) {
		//raw0為前24位,raw1為后24位
		raw0 = raw1++;
		*cook	 = (*raw0 & 0x00fc0000L) << 6;
		*cook	|= (*raw0 & 0x00000fc0L) << 10;
		*cook	|= (*raw1 & 0x00fc0000L) >> 10;
		*cook++ |= (*raw1 & 0x00000fc0L) >> 6;
		*cook	 = (*raw0 & 0x0003f000L) << 12;
		*cook	|= (*raw0 & 0x0000003fL) << 16;
		*cook	|= (*raw1 & 0x0003f000L) >> 4;
		*cook++ |= (*raw1 & 0x0000003fL);
		}
		
		//前24位,每六位一組,每組一個標號
		111111(1),111111(5),111111(2),111111(6)
		//后24位,每六位一組,每組一個標號
		111111(3),111111(7),111111(4),111111(8)
		拼成兩個32位的串:
		0x3f3f3f3f(組號為1234)
		0x3f3f3f3f(組號為5678)
		
		
		
		
		
	//最終把形成的密鑰存放在全局變量KnL中	
	usekey(dough);
	return;
	}

void cpkey(into)
register unsigned long *into;
{
	register unsigned long *from, *endp;

	from = KnL, endp = &KnL[32];
	while( from < endp ) *into++ = *from++;
	return;
	}

void usekey(from)
register unsigned long *from;
{       
        //最終把形成的密鑰存放在全局變量KnL中
	register unsigned long *to, *endp;

	to = KnL, endp = &KnL[32];
	while( to < endp ) *to++ = *from++;
	return;
	}

void des(inblock, outblock)
unsigned char *inblock, *outblock;
{
	unsigned long work[2];
         
	scrunch(inblock, work);//該函數的作用是把一個8位字符串4個為一組放到兩個long型單元中,long型單元就是數組work
	desfunc(work, KnL);   //實質性的加解密操作,把解密后的信息放回work所指向的空間中。
	unscrun(work, outblock);//把兩個long型單元拼成一個八位的字符串
	return;
	}

static void scrunch(outof, into)
register unsigned char *outof;
register unsigned long *into;
{         //outof="abcdefgh"
         //該函數的作用是把一個8位字符串4個為一組放到兩個long型單元中
	*into	 = (*outof++ & 0xffL) << 24;
	*into	|= (*outof++ & 0xffL) << 16;
	*into	|= (*outof++ & 0xffL) << 8;
	*into++ |= (*outof++ & 0xffL);
	*into	 = (*outof++ & 0xffL) << 24;
	*into	|= (*outof++ & 0xffL) << 16;
	*into	|= (*outof++ & 0xffL) << 8;
	*into	|= (*outof   & 0xffL);
	return;
	}

static void unscrun(outof, into)
register unsigned long *outof;
register unsigned char *into;
{
	*into++ = (*outof >> 24) & 0xffL;
	*into++ = (*outof >> 16) & 0xffL;
	*into++ = (*outof >>  8) & 0xffL;
	*into++ =  *outof++	 & 0xffL;
	*into++ = (*outof >> 24) & 0xffL;
	*into++ = (*outof >> 16) & 0xffL;
	*into++ = (*outof >>  8) & 0xffL;
	*into	=  *outof	 & 0xffL;
	return;
	}

static unsigned long SP1[64] = {
	0x01010400L, 0x00000000L, 0x00010000L, 0x01010404L,
	0x01010004L, 0x00010404L, 0x00000004L, 0x00010000L,
	0x00000400L, 0x01010400L, 0x01010404L, 0x00000400L,
	0x01000404L, 0x01010004L, 0x01000000L, 0x00000004L,
	0x00000404L, 0x01000400L, 0x01000400L, 0x00010400L,
	0x00010400L, 0x01010000L, 0x01010000L, 0x01000404L,
	0x00010004L, 0x01000004L, 0x01000004L, 0x00010004L,
	0x00000000L, 0x00000404L, 0x00010404L, 0x01000000L,
	0x00010000L, 0x01010404L, 0x00000004L, 0x01010000L,
	0x01010400L, 0x01000000L, 0x01000000L, 0x00000400L,
	0x01010004L, 0x00010000L, 0x00010400L, 0x01000004L,
	0x00000400L, 0x00000004L, 0x01000404L, 0x00010404L,
	0x01010404L, 0x00010004L, 0x01010000L, 0x01000404L,
	0x01000004L, 0x00000404L, 0x00010404L, 0x01010400L,
	0x00000404L, 0x01000400L, 0x01000400L, 0x00000000L,
	0x00010004L, 0x00010400L, 0x00000000L, 0x01010004L };

static unsigned long SP2[64] = {
	0x80108020L, 0x80008000L, 0x00008000L, 0x00108020L,
	0x00100000L, 0x00000020L, 0x80100020L, 0x80008020L,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产一区在线观看| 久久女同性恋中文字幕| 韩国午夜理伦三级不卡影院| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩亚洲另类| 成人av动漫网站| 美腿丝袜亚洲色图| 亚洲影视在线播放| 中文字幕巨乱亚洲| 精品国产免费一区二区三区香蕉| 91黄色小视频| 波多野洁衣一区| 韩国成人福利片在线播放| 亚洲成人三级小说| 亚洲欧美另类综合偷拍| 中文字幕国产一区二区| 精品99一区二区| 日韩手机在线导航| 欧美日本一区二区| 在线观看视频一区二区 | 免费视频最近日韩| 亚洲精品乱码久久久久久| 国产精品午夜春色av| 久久综合五月天婷婷伊人| 91精品啪在线观看国产60岁| 欧美亚洲丝袜传媒另类| 91亚洲精品乱码久久久久久蜜桃| 国产不卡在线一区| 国产一区二区三区在线观看精品 | 欧美日韩大陆在线| 日本精品一级二级| 日本黄色一区二区| 色老汉av一区二区三区| 色又黄又爽网站www久久| 9i在线看片成人免费| 成人黄色免费短视频| 国产精品一区二区久久不卡 | 久久久久久久久久久久久夜| 日韩亚洲欧美在线| 91精品国产91久久综合桃花| 欧美福利电影网| 欧美一卡2卡3卡4卡| 欧美一级片在线观看| 日韩欧美国产精品| 久久综合给合久久狠狠狠97色69| 日韩欧美国产一区二区在线播放| 日韩精品中文字幕在线一区| 欧美精品一区二区在线播放| 亚洲精品一区二区三区在线观看| 久久影视一区二区| 亚洲电影第三页| 日韩电影在线观看电影| 麻豆精品一区二区av白丝在线| 日日夜夜一区二区| 精品在线一区二区三区| 国产电影精品久久禁18| 波多野结衣欧美| 欧美性受极品xxxx喷水| 91精品蜜臀在线一区尤物| 欧美成人bangbros| 中文字幕免费一区| 亚洲一区二区三区四区不卡| 日韩国产一二三区| 国产精品888| 色就色 综合激情| 日韩欧美中文一区二区| 中文字幕欧美区| 亚洲高清免费视频| 久久精品国产77777蜜臀| 成人午夜激情片| 91成人网在线| 精品日韩欧美在线| 国产精品视频免费| 午夜av区久久| 国产乱码精品一区二区三区忘忧草 | 欧美成人三级电影在线| 欧美激情资源网| 亚洲精品乱码久久久久久久久 | 日韩一区二区免费高清| 久久精品免费在线观看| 亚洲精品国产视频| 麻豆国产一区二区| 99亚偷拍自图区亚洲| 欧美一级理论片| 日韩伦理av电影| 久久99最新地址| 91成人在线观看喷潮| 久久久99精品免费观看不卡| 一区二区理论电影在线观看| 国产最新精品免费| 在线区一区二视频| 国产亚洲人成网站| 日韩国产成人精品| 色婷婷av一区二区三区软件| 精品少妇一区二区三区视频免付费 | 亚洲精品一区二区三区蜜桃下载| 亚洲另类春色国产| 国产精品456露脸| 欧美一区2区视频在线观看| 亚洲视频每日更新| 国产精品一二三区| 欧美一二三四区在线| 亚洲视频香蕉人妖| 粉嫩一区二区三区性色av| 91精品国产高清一区二区三区蜜臀| 亚洲日穴在线视频| 国产91精品欧美| 日韩色在线观看| 亚洲午夜激情av| 一道本成人在线| 国产精品电影院| 国产精品18久久久久久久久久久久 | 99久久精品情趣| 久久蜜臀中文字幕| 美女视频黄频大全不卡视频在线播放 | 国产一区二区调教| 欧美福利视频导航| 亚洲大尺度视频在线观看| 91蜜桃免费观看视频| 国产女主播视频一区二区| 久久国产精品色| 欧美一区二区免费观在线| 婷婷综合五月天| 欧美日韩一区二区三区在线看| 综合色天天鬼久久鬼色| 99久久久无码国产精品| 国产精品你懂的在线欣赏| 国产传媒久久文化传媒| 国产日韩欧美麻豆| 国产精品一级二级三级| 国产日韩欧美不卡在线| 国产福利一区在线观看| 久久―日本道色综合久久| 国产精品一区在线观看乱码| 精品国产伦一区二区三区观看方式| 久久精品国产999大香线蕉| 精品少妇一区二区三区视频免付费 | 中文字幕一区二区三区色视频| 国产精品自拍三区| 国产午夜亚洲精品不卡| 国产成人8x视频一区二区| 中文字幕精品在线不卡| 成年人国产精品| 一区二区三区精品在线| 欧美日韩在线播| 日韩成人av影视| 精品成人佐山爱一区二区| 国产精品一区二区视频| 国产精品久久久久四虎| 色妹子一区二区| 午夜精品福利久久久| 日韩欧美国产一二三区| 国产精品一线二线三线| 亚洲免费看黄网站| 欧美日韩亚洲另类| 黄色精品一二区| 国产精品三级视频| 91麻豆视频网站| 日韩和的一区二区| 欧美精品一区二区三区高清aⅴ| 国产精品白丝jk黑袜喷水| 亚洲欧洲成人自拍| 欧美日韩国产一级二级| 久久91精品久久久久久秒播| 欧美激情中文字幕| 欧美日韩一本到| 国模一区二区三区白浆| 综合电影一区二区三区| 91精品国产91久久综合桃花 | 亚洲午夜精品17c| 欧美成人一区二区三区片免费| 成人久久视频在线观看| 亚洲成人一区二区在线观看| 日韩欧美三级在线| 成人福利视频网站| 午夜精品福利久久久| 国产日韩综合av| 在线成人午夜影院| 丁香婷婷综合色啪| 午夜久久福利影院| 国产精品久久久久婷婷| 91麻豆精品国产91久久久久久久久 | 欧美精品一区二区三区在线播放| 97久久超碰精品国产| 日韩高清一级片| 亚洲天堂精品在线观看| 日韩一级高清毛片| 一本一本大道香蕉久在线精品| 美腿丝袜亚洲色图| 一区二区激情视频| 国产三级欧美三级| 欧美精品久久久久久久多人混战| 成人精品国产一区二区4080| 日本欧美一区二区在线观看| 亚洲少妇30p| 久久久精品国产免大香伊| 欧美肥妇bbw| 欧洲日韩一区二区三区| 国产aⅴ综合色| 久久精品国产在热久久|