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

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

?? des.cpp

?? 之前
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
  作       者:	鄒德強
  更 新 日 期:	2003.12.19
/*******************************************************************/
bool CDES::RunDes(bool bType,bool bMode,char* In,char* Out,unsigned datalen,const char* Key,const unsigned char keylen)
{
	//判斷輸入合法性
	if(!(In && Out && Key && datalen && keylen>=8))
		return false;
	//只處理8的整數倍,不足長度自己填充
	if(datalen & 0x00000007)
		return false;
	
	bool				m_SubKey[3][16][48];		//秘鑰
	//構造并生成SubKeys
	unsigned char nKey	=	(keylen>>3)>3 ? 3: (keylen>>3);
	for(int i=0;i<nKey;i++)
	{
		SetSubKey(&m_SubKey[i],&Key[i<<3]);
	}

	if(bMode == ECB)	//ECB模式
	{
		if(nKey	==	1)	//單Key
		{
			for(int i=0,j=datalen>>3;i<j;++i,Out+=8,In+=8)
			{
				DES(Out,In,&m_SubKey[0],bType);
			}
		}
		else
		if(nKey == 2)	//3DES 2Key
		{
			for(int i=0,j=datalen>>3;i<j;++i,Out+=8,In+=8)
			{
				DES(Out,In,&m_SubKey[0],bType);
				DES(Out,Out,&m_SubKey[1],!bType);
				DES(Out,Out,&m_SubKey[0],bType);
			}
		}
		else			//3DES 3Key
		{
			for(int i=0,j=datalen>>3;i<j;++i,Out+=8,In+=8)
			{
				DES(Out,In,&m_SubKey[bType? 2 : 0],bType);
				DES(Out,Out,&m_SubKey[1],!bType);
				DES(Out,Out,&m_SubKey[bType? 0 : 2],bType);	
			}
		}
	}	
	else				//CBC模式
	{
		char	cvec[8]	=	"";	//扭轉向量
		char	cvin[8]	=	""; //中間變量

		if(nKey == 1)	//單Key
		{
			for(int i=0,j=datalen>>3;i<j;++i,Out+=8,In+=8)
			{
				if(bType	==	CDES::ENCRYPT)
				{
					for(int j=0;j<8;++j)		//將輸入與扭轉變量異或
					{
						cvin[j]	=	In[j] ^ cvec[j];
					}
				}
				else
				{
					memcpy(cvin,In,8);
				}

				DES(Out,cvin,&m_SubKey[0],bType);

				if(bType	==	CDES::ENCRYPT)
				{
					memcpy(cvec,Out,8);			//將輸出設定為扭轉變量
				}
				else
				{
					for(int j=0;j<8;++j)		//將輸出與扭轉變量異或
					{
						Out[j]	=	Out[j] ^ cvec[j];
					}
					memcpy(cvec,cvin,8);			//將輸入設定為扭轉變量
				}
			}
		}
		else
		if(nKey == 2)	//3DES CBC 2Key
		{
			for(int i=0,j=datalen>>3;i<j;++i,Out+=8,In+=8)
			{
				if(bType	==	CDES::ENCRYPT)
				{
					for(int j=0;j<8;++j)		//將輸入與扭轉變量異或
					{
						cvin[j]	=	In[j] ^ cvec[j];
					}
				}
				else
				{
					memcpy(cvin,In,8);
				}
				
				DES(Out,cvin,&m_SubKey[0],bType);
				DES(Out,Out,&m_SubKey[1],!bType);
				DES(Out,Out,&m_SubKey[0],bType);
				
				if(bType	==	CDES::ENCRYPT)
				{
					memcpy(cvec,Out,8);			//將輸出設定為扭轉變量
				}
				else
				{
					for(int j=0;j<8;++j)		//將輸出與扭轉變量異或
					{
						Out[j]	=	Out[j] ^ cvec[j];
					}
					memcpy(cvec,cvin,8);			//將輸入設定為扭轉變量
				}
			}
		}
		else			//3DES CBC 3Key
		{
			for(int i=0,j=datalen>>3;i<j;++i,Out+=8,In+=8)
			{
				if(bType	==	CDES::ENCRYPT)
				{
					for(int j=0;j<8;++j)		//將輸入與扭轉變量異或
					{
						cvin[j]	=	In[j] ^ cvec[j];
					}
				}
				else
				{
					memcpy(cvin,In,8);
				}
				
				DES(Out,cvin,&m_SubKey[bType ? 2 : 0],bType);
				DES(Out,Out,&m_SubKey[1],!bType);
				DES(Out,Out,&m_SubKey[bType ? 0 : 2],bType);
				
				if(bType	==	CDES::ENCRYPT)
				{
					memcpy(cvec,Out,8);			//將輸出設定為扭轉變量
				}
				else
				{
					for(int j=0;j<8;++j)		//將輸出與扭轉變量異或
					{
						Out[j]	=	Out[j] ^ cvec[j];
					}
					memcpy(cvec,cvin,8);			//將輸入設定為扭轉變量
				}
			}
		}
	}
	
	return true;
}




/*******************************************************************/
/*
  函 數 名 稱:	RunPad
  功 能 描 述:	根據協議對加密前的數據進行填充
  參 數 說 明:	bType	:類型:PAD類型
				In		:數據串指針
				Out		:填充輸出串指針
				datalen	:數據的長度
				padlen	:(in,out)輸出buffer的長度,填充后的長度

  返回值 說明:	bool	:是否填充成功
  作       者:	鄒德強
  修 改 歷 史:	

  更 新 日 期:	2003.12.19
/*******************************************************************/
bool	CDES::RunPad(int nType,const char* In,unsigned datalen,char* Out,unsigned& padlen)
{
	int res = (datalen & 0x00000007);
	
	
	if(padlen< (datalen+8-res))
	{
		return false;
	}
	else
	{
		padlen	=	(datalen+8-res);
		memcpy(Out,In,datalen);
	}
	
	
	if(nType	==	PAD_ISO_1)
	{
		memset(Out+datalen,0x00,8-res);
	}
	else
	if(nType	==	PAD_ISO_2)
	{
		memset(Out+datalen,0x80,1);
		memset(Out+datalen,0x00,7-res);
	}
	else
	if(nType	==	PAD_PKCS_7)
	{
		memset(Out+datalen,8-res,8-res);
	}
	else
	{
		return false;
	}

	return true;
}




//計算并填充子密鑰到SubKey數據中
void CDES::SetSubKey(PSubKey pSubKey, const char Key[8])
{
	bool K[64], *KL=&K[0], *KR=&K[28];
    ByteToBit(K, Key, 64);
    Transform(K, K, PC1_Table, 56);
    for(int i=0; i<16; ++i) {
        RotateL(KL, 28, LOOP_Table[i]);
        RotateL(KR, 28, LOOP_Table[i]);
        Transform((*pSubKey)[i], K, PC2_Table, 48);
    }
}



//DES單元運算
void CDES::DES(char Out[8], char In[8], const PSubKey pSubKey, bool Type)
{
    bool M[64], tmp[32], *Li=&M[0], *Ri=&M[32];
    ByteToBit(M, In, 64);
    Transform(M, M, IP_Table, 64);
    if( Type == ENCRYPT )
	{
        for(int i=0; i<16; ++i)
		{
            memcpy(tmp, Ri, 32);		//Ri[i-1] 保存
            F_func(Ri, (*pSubKey)[i]);	//Ri[i-1]經過轉化和SBox輸出為P
            Xor(Ri, Li, 32);			//Ri[i] = P XOR Li[i-1]
            memcpy(Li, tmp, 32);		//Li[i] = Ri[i-1]
        }
    }
	else
	{
        for(int i=15; i>=0; --i) 
		{
			memcpy(tmp, Ri, 32);		//Ri[i-1] 保存
            F_func(Ri, (*pSubKey)[i]);	//Ri[i-1]經過轉化和SBox輸出為P
            Xor(Ri, Li, 32);			//Ri[i] = P XOR Li[i-1]
            memcpy(Li, tmp, 32);		//Li[i] = Ri[i-1]
        }
	}
	RotateL(M,64,32);					//Ri與Li換位重組M
    Transform(M, M, IPR_Table, 64);		//最后結果進行轉化
    BitToByte(Out, M, 64);				//組織成字符
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美极品aⅴ影院| 欧美日韩美少妇| 国产剧情在线观看一区二区| 日韩电影在线免费| 婷婷六月综合网| 日韩不卡免费视频| 日韩成人av影视| 精品一区二区在线播放| 精品亚洲免费视频| 国产成a人亚洲| 成人激情校园春色| 99久久综合99久久综合网站| 日本高清不卡一区| 欧美一区二区三区在线观看| 精品国产成人在线影院 | 在线视频综合导航| 在线观看网站黄不卡| 欧美吞精做爰啪啪高潮| 日韩精品最新网址| 精品国产三级a在线观看| 国产精品美女久久久久久2018| 国产精品全国免费观看高清| 亚洲另类春色校园小说| 日日夜夜免费精品| 国产精品一区二区在线播放 | 全国精品久久少妇| 国产一区二区按摩在线观看| aaa欧美大片| 在线成人免费观看| 精品福利视频一区二区三区| 国产精品卡一卡二卡三| 亚洲国产乱码最新视频| 国产在线精品不卡| 日本精品一区二区三区四区的功能| 91麻豆精品91久久久久久清纯 | 欧美日韩dvd在线观看| 精品国产百合女同互慰| 亚洲精品成a人| 国产综合一区二区| 欧美日韩小视频| 综合欧美亚洲日本| 国产在线观看一区二区| 欧美无砖专区一中文字| 中文久久乱码一区二区| 日本不卡在线视频| 色婷婷亚洲综合| 久久久久久久综合日本| 亚洲第一久久影院| 暴力调教一区二区三区| 久久综合九色综合97婷婷女人| 亚洲欧美日韩久久精品| 国产麻豆成人传媒免费观看| 91精品国产一区二区三区 | 人人精品人人爱| 色欧美88888久久久久久影院| 久久精品亚洲国产奇米99| 天天综合天天综合色| 91在线观看免费视频| 国产天堂亚洲国产碰碰| 日产国产高清一区二区三区| 欧美性videosxxxxx| 久久精品亚洲精品国产欧美kt∨| 日本成人在线看| 91精品国产高清一区二区三区| 亚洲女爱视频在线| 99精品黄色片免费大全| 国产欧美日韩三区| 国产99久久久国产精品| 久久综合九色综合欧美就去吻| 麻豆专区一区二区三区四区五区| 欧美日韩一区二区电影| 一区二区三区不卡在线观看| 在线免费精品视频| 一区二区三区精品在线观看| 色老汉一区二区三区| 亚洲人亚洲人成电影网站色| 99久久免费视频.com| 亚洲私人影院在线观看| 91麻豆精东视频| 亚洲精品一卡二卡| 欧洲av在线精品| 五月激情综合色| 日韩精品一区二区在线| 国产精品一二三| 久久久久久久久久久久久女国产乱| 国产一区二区女| 国产精品免费人成网站| 97精品电影院| 午夜精品国产更新| 精品蜜桃在线看| 成人高清免费观看| 亚洲第一在线综合网站| 日韩欧美精品在线视频| 国产激情一区二区三区| 亚洲色图欧美激情| 欧美日韩免费观看一区三区| 久久精品久久99精品久久| 久久九九久精品国产免费直播| 成人av中文字幕| 亚洲国产精品一区二区www| 日韩欧美亚洲另类制服综合在线 | 最新中文字幕一区二区三区 | 欧美tk—视频vk| 狠狠色丁香婷婷综合久久片| 亚洲国产激情av| 欧美日韩精品一区二区三区蜜桃| 视频一区视频二区中文| 国产片一区二区三区| 欧美午夜精品久久久久久超碰 | 欧美一区二区三区人| 国产成人精品免费一区二区| 一区二区三区免费在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 色综合久久久久综合99| 日韩精品一级中文字幕精品视频免费观看| 精品国产露脸精彩对白| 欧美日韩中文精品| 国产999精品久久久久久绿帽| 亚洲一级二级三级在线免费观看| 久久婷婷一区二区三区| 欧美日韩黄色影视| 99久久久久久| 韩国v欧美v亚洲v日本v| 午夜精品免费在线| 1024成人网| 国产精品天干天干在线综合| 日韩三级电影网址| 日本韩国精品一区二区在线观看| 国产麻豆视频一区二区| 蜜芽一区二区三区| 亚洲一二三区不卡| 亚洲色图视频网| 国产精品毛片久久久久久| 日韩欧美中文一区二区| 欧美日韩综合不卡| 色婷婷综合久色| 99麻豆久久久国产精品免费| 粉嫩aⅴ一区二区三区四区| 精品一区二区三区免费播放| 午夜一区二区三区视频| 亚洲人成网站精品片在线观看| 久久久www成人免费无遮挡大片| 精品少妇一区二区三区| 日韩美女主播在线视频一区二区三区| 日本韩国精品在线| 欧美色偷偷大香| 欧美亚洲一区二区在线| 91久久精品国产91性色tv| 91在线国内视频| 91网站最新网址| 一本到三区不卡视频| 91色porny蝌蚪| 91免费版pro下载短视频| 91网站在线播放| 欧美亚洲国产一区二区三区va| 欧美在线看片a免费观看| 欧美无人高清视频在线观看| 欧美日韩精品一区二区三区蜜桃| 欧美精品色一区二区三区| 日韩情涩欧美日韩视频| 欧美一区二区高清| 日韩欧美成人午夜| 国产欧美日韩卡一| 亚洲欧美另类小说视频| 一区二区三区在线高清| 亚洲一卡二卡三卡四卡无卡久久| 亚洲精品国产a久久久久久| 五月天激情综合| 国产裸体歌舞团一区二区| 成人动漫一区二区在线| 91麻豆精东视频| 日韩午夜中文字幕| 欧美激情一区二区三区不卡 | av成人老司机| 色丁香久综合在线久综合在线观看| 欧美日韩中文字幕一区| 精品久久国产字幕高潮| 国产精品色在线观看| 亚洲福利视频一区二区| 国产一区二区三区香蕉 | 国产一区二区不卡在线| 97久久精品人人澡人人爽| 欧美这里有精品| 久久免费的精品国产v∧| 中文字幕一区免费在线观看| 天堂久久久久va久久久久| 久久99久久久久| 91在线一区二区三区| 日韩精品一区二区三区在线播放| 国产精品欧美一区喷水| 日韩电影免费在线观看网站| 日韩欧美一级二级三级久久久| 国产午夜精品一区二区三区嫩草| 一区二区三区在线观看欧美| 国产一区二区三区在线观看精品 | 国产三级一区二区三区| 亚洲国产成人av好男人在线观看| 国产精品资源网| 91麻豆精品国产自产在线| 国产精品美女久久久久久2018|