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

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

?? des.cpp

?? des算法的C++實現(xiàn)
?? CPP
字號:
/********************************************************************/
/*                    DES(Data Encryption Standard)                 */
/*                        Written by Bunny                          */
/*                      Banyet Soft Labs. 1999                      */
/*                        ALL RIGHTS RESERVED!                      */
/*          注意! 版權(quán)所有! 可以自由轉(zhuǎn)載,但不得加以修改或刪除!      */
/*         E-mail:Assassin@ynmail.com  Http://Assassin.yeah.net     */   
/********************************************************************/

/**************************************************************************/
/*注意:這只是標(biāo)準(zhǔn)DES算法的例子,所以速度并不是很快,不適用于大量數(shù)據(jù)加密的場*/
/*合.UNIX的密碼也采用DES,不過它在里面加了點(diǎn)其它的東西.所以結(jié)果和DES的結(jié)果 */
/*不一樣. 由于使用了WINDOWS類庫,所以必須在WINDOWS環(huán)境下編譯.              */
/**************************************************************************/

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include "Schedle.h"

class CShift{
public:
	DWORDLONG mask[16];
	int step[16];
	CShift(){
		for(int i=0;i<16;i++){
			step[i]=2;
			mask[i]=0xc000000;
		}
		step[0]=step[1]=step[8]=step[15]=1;
		mask[0]=mask[1]=mask[8]=mask[15]=0x8000000;
	}
};

class CDES{

public:

	CDES(){
		m_dwlKey=0;
		m_dwlData=0;
		ConvertTableToMask(dwlKey_PC_1,64);
		//PrintTable(dwlKey_PC_1,7,8);
		ConvertTableToMask(dwlKey_PC_2,56);
		ConvertTableToMask(dwlData_IP,64);
		ConvertTableToMask(dwlData_Expansion,32);
		ConvertTableToMask(dwlData_FP,64);
		ConvertTableToMask(dwlData_P,32);
		Generate_S();

	}
	void PrintBit(DWORDLONG);
	void EncryptKey(char *);
	unsigned char* EncryptData(unsigned char *);
	unsigned char* DescryptData(unsigned char*);

private:
	void ConvertTableToMask(DWORDLONG *,int);
	void Generate_S(void);
	void PrintTable(DWORDLONG*,int,int);
	DWORDLONG ProcessByte(unsigned char*,BOOL);
	DWORDLONG PermuteTable(DWORDLONG,DWORDLONG*,int);
	void Generate_K(void);
	void EncryptKernel(void);
	DWORDLONG Generate_B(DWORDLONG,DWORDLONG*);
	/*For verify schedule permutation only*/
	DWORDLONG UnPermuteTable(DWORDLONG,DWORDLONG*,int); 
	/**************************************/
	DWORDLONG dwlData_S[9][4][16];
	CShift m_shift;
	DWORDLONG m_dwlKey;
	DWORDLONG m_dwlData;
	DWORDLONG m_dwl_K[17];
};		

void CDES::EncryptKey(char *key){

	printf("\nOriginal Key: %s",key);
	m_dwlKey=ProcessByte((unsigned char*)key,TRUE);
//	PrintBit(m_dwlKey);
	m_dwlKey=PermuteTable(m_dwlKey,dwlKey_PC_1,56);
//	PrintBit(m_dwlKey);
	Generate_K();
//	printf("\n******************************************\n");
}

void CDES::Generate_K(void){

	DWORDLONG C[17],D[17],tmp;

	C[0]=m_dwlKey>>28;
	D[0]=m_dwlKey&0xfffffff;
	
	for(int i=1;i<=16;i++){
		tmp=(C[i-1]&m_shift.mask[i-1])>>(28-m_shift.step[i-1]);
		C[i]=((C[i-1]<<m_shift.step[i-1])|tmp)&0x0fffffff;
		tmp=(D[i-1]&m_shift.mask[i-1])>>(28-m_shift.step[i-1]);
		D[i]=((D[i-1]<<m_shift.step[i-1])|tmp)&0x0fffffff;
		m_dwl_K[i]=(C[i]<<28)|D[i];
		m_dwl_K[i]=PermuteTable(m_dwl_K[i],dwlKey_PC_2,48);
	}
}

DWORDLONG CDES::ProcessByte(unsigned char *key,BOOL shift){

	unsigned char tmp;
	DWORDLONG byte=0;
	int i=0;

	while(i<8){
		while(*key){
			if(byte!=0)
				byte<<=8;
			tmp=*key;
			if(shift)
				tmp<<=1;
			byte|=tmp;
			i++;
			key++;
		}
		if(i<8)
			byte<<=8;
		i++;
	}
	return byte;
}

DWORDLONG CDES::PermuteTable(DWORDLONG dwlPara,DWORDLONG* dwlTable,int nDestLen){

	int i=0;
	DWORDLONG tmp=0,moveBit;

	while(i<nDestLen){
		moveBit=1;
		if(dwlTable[i]&dwlPara){
			moveBit<<=nDestLen-i-1;
			tmp|=moveBit;
		}
		i++;
	}
	return tmp;
}

DWORDLONG CDES::UnPermuteTable(DWORDLONG dwlPara,DWORDLONG* dwlTable,int nDestLen){

	DWORDLONG tmp=0;
	int i=nDestLen-1;

	while(dwlPara!=0){
		if(dwlPara&0x01)
			tmp|=dwlTable[i];
		dwlPara>>=1;
		i--;
	}
	return tmp;
}

void CDES::PrintTable(DWORDLONG *dwlPara,int col,int row){

	int i,j;
	for(i=0;i<row;i++){
		printf("\n");
		getch();
		for(j=0;j<col;j++)
			PrintBit(dwlPara[i*col+j]);
	}
}

void CDES::PrintBit(DWORDLONG bitstream){

	char out[76];
	int i=0,j=0,space=0;

	while(bitstream!=0){
		if(bitstream&0x01)
			out[i++]='1';
		else
			out[i++]='0';
		j++;
		if(j%8==0){
			out[i++]=' ';
			space++;
		}
		
		bitstream=bitstream>>1;
	}
	out[i]='\0';
	strcpy(out,strrev(out));
	printf("%s **:%d\n",out,i-space);
}

void CDES::ConvertTableToMask(DWORDLONG *mask,int max){

	int i=0;
	DWORDLONG nBit=1;

	while(mask[i]!=0){
		nBit=1;
		nBit<<=max-mask[i];
		mask[i++]=nBit;
	}
}
		
void CDES::Generate_S(void){
	
	int i;
	int j,m,n;
	m=n=0;
	j=1;

	for(i=0;i<512;i++){
		dwlData_S[j][m][n]=OS[i];
		n=(n+1)%16;
		if(!n){
			m=(m+1)%4;
			if(!m)
				j++;
		}
	}
}

unsigned char * CDES::EncryptData(unsigned char *block){

	unsigned char *EncrytedData=new unsigned char(15);

	printf("\nOriginal Data: %s\n",block);
	m_dwlData=ProcessByte(block,0);
//	PrintBit(m_dwlData);
	m_dwlData=PermuteTable(m_dwlData,dwlData_IP,64);
	EncryptKernel();
//	PrintBit(m_dwlData);
	DWORDLONG bit6=m_dwlData;
	for(int i=0;i<11;i++){
		EncrytedData[7-i]=(unsigned char)(bit6&0x3f)+46;
		bit6>>=6;
	}
	EncrytedData[11]='\0';
	printf("\nAfter Encrypted: %s",EncrytedData);

	for(i=0;i<8;i++){
		EncrytedData[7-i]=(unsigned char)(m_dwlData&0xff);
		m_dwlData>>=8;
	}
	EncrytedData[8]='\0';


	return EncrytedData;
}

void CDES::EncryptKernel(void){

	int i=1;

	DWORDLONG L[17],R[17],B[9],EK,PSB;
	L[0]=m_dwlData>>32;
	R[0]=m_dwlData&0xffffffff;
	
	for(i=1;i<=16;i++){
		L[i]=R[i-1];
		R[i-1]=PermuteTable(R[i-1],dwlData_Expansion,48);	//Expansion R
		EK=R[i-1]^m_dwl_K[i];	//E Permutation
		PSB=Generate_B(EK,B);	//P Permutation
		R[i]=L[i-1]^PSB;
	}

	R[16]<<=32;
	m_dwlData=R[16]|L[16];
	m_dwlData=PermuteTable(m_dwlData,dwlData_FP,64);
}

unsigned char* CDES::DescryptData(unsigned char *desData){

	int i=1;
	unsigned char *DescryptedData=new unsigned char(15);
	DWORDLONG L[17],R[17],B[9],EK,PSB;
	DWORDLONG dataPara;

	dataPara=ProcessByte(desData,0);
	dataPara=PermuteTable(dataPara,dwlData_IP,64);

	R[16]=dataPara>>32;
	L[16]=dataPara&0xffffffff;
	
	for(i=16;i>=1;i--){
		R[i-1]=L[i];
		L[i]=PermuteTable(L[i],dwlData_Expansion,48);	//Expansion L
		EK=L[i]^m_dwl_K[i];	//E Permutation
		PSB=Generate_B(EK,B);	//P Permutation
		L[i-1]=R[i]^PSB;
	}

	L[0]<<=32;
	dataPara=L[0]|R[0];
	dataPara=PermuteTable(dataPara,dwlData_FP,64);

//	PrintBit(dataPara);

	for(i=0;i<8;i++){
		DescryptedData[7-i]=(unsigned char)(dataPara&0xff);
		dataPara>>=8;
	}
	DescryptedData[8]='\0';
	printf("\nAfter Decrypted: %s\n",DescryptedData);

	return DescryptedData;
}

DWORDLONG CDES::Generate_B(DWORDLONG EKPara,DWORDLONG *block){

	int i,m,n;
	DWORDLONG tmp=0;

	for(i=8;i>0;i--){
		block[i]=EKPara&0x3f;
		m=(int)(block[i]&0x20)>>4;
		m|=block[i]&0x01;
		n=(int)(block[i]<<1)>>2;
		block[i]=dwlData_S[i][m][n];
		EKPara>>=6;
	}

	for(i=1;i<=8;i++){
		tmp|=block[i];
		tmp<<=4;
	}
	tmp>>=4;
	tmp=PermuteTable(tmp,dwlData_P,32);

	return tmp;
}

void main(void){

	CDES des;
	des.EncryptKey("12345678");
	unsigned char *result=des.EncryptData((unsigned char*)"DemoData");
	des.DescryptData(result);
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9久草视频在线视频精品| 一区二区三区在线不卡| 国产精品久久久久久久久免费樱桃| 亚洲愉拍自拍另类高清精品| 韩国三级电影一区二区| 国产精品一级黄| 日韩精品每日更新| 自拍偷拍亚洲激情| 亚洲色图19p| 国产精品免费视频一区| 《视频一区视频二区| 日韩国产精品久久久久久亚洲| 欧美网站大全在线观看| 成人影视亚洲图片在线| 国产成a人亚洲| 一区二区三区资源| 欧美乱熟臀69xxxxxx| 国内久久精品视频| 中文字幕一区二区在线观看| 欧美日韩成人激情| 国产精品996| 亚洲一区二区三区影院| 久久综合久久久久88| 在线欧美日韩国产| 国产在线不卡一区| 亚洲国产综合在线| 国产亚洲精品7777| 欧洲国内综合视频| 国产丶欧美丶日本不卡视频| 亚洲国产一区二区三区青草影视| 精品久久久久av影院| 欧美一a一片一级一片| 国产美女精品人人做人人爽| 伊人色综合久久天天| 2021国产精品久久精品| 欧洲日韩一区二区三区| 国产一区在线看| 青青草伊人久久| 欧美成人a∨高清免费观看| 91丨九色丨蝌蚪富婆spa| 久久av中文字幕片| 亚洲一区二区av在线| 国产精品三级视频| 日韩欧美精品在线| 91在线播放网址| 国产+成+人+亚洲欧洲自线| 午夜久久久久久电影| 国产精品乱码一区二区三区软件| 爽好多水快深点欧美视频| 91亚洲精品乱码久久久久久蜜桃 | 中文字幕精品—区二区四季| 伊人色综合久久天天人手人婷| 99久精品国产| 亚洲精选在线视频| a美女胸又www黄视频久久| 国产精品福利一区| 色婷婷综合久色| 亚洲免费在线视频| 欧美日韩精品免费观看视频| 亚洲成人www| 91精品国产91久久久久久一区二区 | 欧美精品一区二区三区蜜桃 | 99久久夜色精品国产网站| 欧美成人性福生活免费看| 欧美在线免费播放| 99久久精品久久久久久清纯| 国产成人免费视频一区| 精品一区二区三区在线观看| 美女任你摸久久| 麻豆一区二区三| 免费久久99精品国产| 精品一区二区三区不卡| 日韩一区二区三区视频在线观看 | 一区二区三区毛片| av不卡一区二区三区| 亚洲自拍与偷拍| 欧美精品色综合| 国产一区中文字幕| 午夜精品久久久久久不卡8050| 亚洲男人天堂av| 亚洲成人免费看| 国产suv精品一区二区三区| 久久99国产精品免费网站| 美女高潮久久久| 国产在线精品免费av| 懂色一区二区三区免费观看| 成人一区二区三区在线观看| jlzzjlzz欧美大全| 欧洲视频一区二区| 欧美高清dvd| 精品伦理精品一区| 欧美高清在线精品一区| 亚洲女同女同女同女同女同69| 一区二区三区四区五区视频在线观看 | 欧美国产一区二区| 自拍偷拍欧美精品| 午夜视频在线观看一区二区 | 国产一区二区三区免费| 国产成a人亚洲精| 91官网在线观看| 9191成人精品久久| 欧美tk丨vk视频| 国产精品区一区二区三区| 夜夜嗨av一区二区三区| 日本中文一区二区三区| 国产成人午夜视频| 欧美性大战久久久| 欧美精品一区二区三| 中文字幕一区二区三区蜜月| 日产欧产美韩系列久久99| 丁香网亚洲国际| 欧美另类变人与禽xxxxx| 久久色视频免费观看| 亚洲精品欧美专区| 美腿丝袜亚洲三区| www.亚洲国产| 欧美日韩一二三区| 精品伦理精品一区| 亚洲色图视频网站| 日韩va亚洲va欧美va久久| 国产成a人亚洲精| 波多野结衣视频一区| 欧美日韩mp4| 亚洲欧洲色图综合| 国产综合色在线| 91精品福利在线| 国产精品免费久久| 三级不卡在线观看| 一本色道久久综合狠狠躁的推荐| 欧美日韩国产综合一区二区三区| 久久久不卡影院| 午夜精品福利一区二区蜜股av | 欧美一二三四区在线| 337p亚洲精品色噜噜| 亚洲欧洲一区二区三区| 国产在线精品免费av| 久久九九影视网| 日本精品裸体写真集在线观看| 欧美一区二区在线免费播放| 精品国产免费人成在线观看| 麻豆精品视频在线| 日韩福利电影在线观看| 亚洲成人7777| 亚洲精品视频在线观看网站| 国产一区不卡在线| 8x福利精品第一导航| 亚洲一区二区五区| 91免费小视频| 欧美激情一区二区三区全黄| 国产主播一区二区| 精品人伦一区二区色婷婷| 日本欧美肥老太交大片| 欧美日韩亚州综合| 亚洲成a人v欧美综合天堂| 成人av在线一区二区| 国产精品全国免费观看高清| 高清不卡一区二区在线| 国产精品萝li| 欧洲精品视频在线观看| 五月婷婷欧美视频| 日韩精品一区二区三区中文精品| 精品在线亚洲视频| 国产性天天综合网| 大陆成人av片| 国产精品拍天天在线| 一本色道久久综合亚洲91| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩国产综合一区二区| 日韩精彩视频在线观看| 精品国产1区二区| 在线观看免费亚洲| 免费成人av在线播放| 久久精品无码一区二区三区| 91最新地址在线播放| 免费在线一区观看| 亚洲免费av网站| 精品国产一区二区三区四区四| 成人久久18免费网站麻豆| 午夜欧美视频在线观看| 欧美经典一区二区| 欧美日韩精品一区二区天天拍小说 | 日韩高清在线不卡| 欧日韩精品视频| 久久99久久久久久久久久久| 日韩不卡一区二区| 欧美午夜宅男影院| 国产精品久久久久久久午夜片| 欧美视频中文字幕| 日本成人在线电影网| 久久蜜桃av一区二区天堂| 成人av在线影院| 午夜视黄欧洲亚洲| 久久久国产午夜精品 | 亚洲欧美日韩国产综合| 欧美色网站导航| 久久精品国产澳门| 国产精品美女久久久久aⅴ国产馆| 日韩一级高清毛片| 91精品1区2区| 欧美色精品在线视频|