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

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

?? des.c

?? 本人基于William Stalling的《密碼學與網絡安全》實現的128位DES加密算法
?? C
?? 第 1 頁 / 共 2 頁
字號:
//////////////////////////////////////////////////////////////////////////////
//						**************************							//
//						*Data Encryption Standard*							//
//						**************************							//
//																			//
//								Realized in C								//
//																			//
//								*************								//
//								*Constructed*								//
//								*     By    *								//
//								*           *								//
//								*Xie Xingwei*								//
//								*************								//
//																			//
//	If you have any question about my code,contact me with E-mail please	//
//																			//
//						xiexingwei_2008@hotmail.com							//
//////////////////////////////////////////////////////////////////////////////

#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include "data_struct.h"

/*16 48-bit subkeys*/
extern struct SUBKEYSTRUCT subkey1;
extern struct SUBKEYSTRUCT subkey2;
extern struct SUBKEYSTRUCT subkey3;
extern struct SUBKEYSTRUCT subkey4;
extern struct SUBKEYSTRUCT subkey5;
extern struct SUBKEYSTRUCT subkey6;
extern struct SUBKEYSTRUCT subkey7;
extern struct SUBKEYSTRUCT subkey8;
extern struct SUBKEYSTRUCT subkey9;
extern struct SUBKEYSTRUCT subkey10;
extern struct SUBKEYSTRUCT subkey11;
extern struct SUBKEYSTRUCT subkey12;
extern struct SUBKEYSTRUCT subkey13;
extern struct SUBKEYSTRUCT subkey14;
extern struct SUBKEYSTRUCT subkey15;
extern struct SUBKEYSTRUCT subkey16;

int des(unsigned char *buffer)
{
	/*Some variables for DES computation*/
	int i,x;
	struct BLOCK4L temp4L;
	struct BLOCK4S *ptemp4S;
	unsigned char temp[4];
	unsigned char temp1[4];
	struct BLOCK32S *ptemp1;
	unsigned char tempbuffer[8];
	struct BLOCK64S *ptempbuffer;

	struct SUBKEYSTRUCT *subkey;/*Pointer of subkeys*/

	struct BLOCK64S *pbuffer;
	struct SUBKEYSTRUCT EPbuffer; /*Used for expansion/permutation*/
	unsigned char redbuffer[4];/*Left part of the buffer*/
	unsigned char bluebuffer[4];/*Right part of the buffer*/
	struct BLOCK32S8 *pbluebuffer;
	struct BLOCK32L *leftpart; /*Pointer of the left part*/
	struct BLOCK32S *rightpart;/*Pointer of the right part*/
	struct BLOCK32L *rightpart1;
	struct BLOCK2S row; /*Used for locating the data in the S-Boxes*/
	struct BLOCK4S col; /*Used for locating the data in the S-Boxes*/
	struct BLOCK2L *prow;
	struct BLOCK4L *pcol;

	/*Definition of 8 DES S-Boxes*/
	unsigned S1[4][16]={{14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7},
						{0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8},
						{4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0},
						{15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13}};

	unsigned S2[4][16]={{15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10},
						{3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5},
						{0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15},
						{13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9}};

	unsigned S3[4][16]={{10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8},
						{13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1},
						{13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7},
						{1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12}};

	unsigned S4[4][16]={{7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15},
						{13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9},
						{10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4},
						{3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14}};

	unsigned S5[4][16]={{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9},
						{14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6},
						{4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14},
						{11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3}};

	unsigned S6[4][16]={{12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11},
						{10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8},
						{9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6},
						{4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13}};

	unsigned S7[4][16]={{4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1},
						{13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6},
						{1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2},
						{6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12}};

	unsigned S8[4][16]={{13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7},
						{1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2},
						{7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8},
						{2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11}};

	/*Pointer initialization*/
	pbuffer=(struct BLOCK64S *)buffer;
	ptempbuffer=(struct BLOCK64S *)tempbuffer;
	leftpart=(struct BLOCK32L *)redbuffer;
	pbluebuffer=(struct BLOCK32S8 *)bluebuffer;
	rightpart=(struct BLOCK32S *)bluebuffer;
	rightpart1=(struct BLOCK32L *)bluebuffer;
	prow=(struct BLOCK2L *)(&row);
	pcol=(struct BLOCK4L *)(&col);
	ptemp1=(struct BLOCK32S *)(&temp1);
	ptemp4S=(struct BLOCK4S *)(&temp4L);
	
	/*Initial permutation*/
	for(i=0;i<8;i++)
	{
		tempbuffer[i]=buffer[i];
	}
	pbuffer->bit0=ptempbuffer->bit57; pbuffer->bit1=ptempbuffer->bit49;
	pbuffer->bit2=ptempbuffer->bit41; pbuffer->bit3=ptempbuffer->bit33;
	pbuffer->bit4=ptempbuffer->bit25; pbuffer->bit5=ptempbuffer->bit17;
	pbuffer->bit6=ptempbuffer->bit9;  pbuffer->bit7=ptempbuffer->bit1;
	pbuffer->bit8=ptempbuffer->bit59; pbuffer->bit9=ptempbuffer->bit51;
	pbuffer->bit10=ptempbuffer->bit43;pbuffer->bit11=ptempbuffer->bit35;
	pbuffer->bit12=ptempbuffer->bit27;pbuffer->bit13=ptempbuffer->bit19;
	pbuffer->bit14=ptempbuffer->bit11;pbuffer->bit15=ptempbuffer->bit3;
	pbuffer->bit16=ptempbuffer->bit61;pbuffer->bit17=ptempbuffer->bit53;
	pbuffer->bit18=ptempbuffer->bit45;pbuffer->bit19=ptempbuffer->bit37;
	pbuffer->bit20=ptempbuffer->bit29;pbuffer->bit21=ptempbuffer->bit21;
	pbuffer->bit22=ptempbuffer->bit13;pbuffer->bit23=ptempbuffer->bit5;
	pbuffer->bit24=ptempbuffer->bit63;pbuffer->bit25=ptempbuffer->bit55;
	pbuffer->bit26=ptempbuffer->bit47;pbuffer->bit27=ptempbuffer->bit39;
	pbuffer->bit28=ptempbuffer->bit31;pbuffer->bit29=ptempbuffer->bit23;
	pbuffer->bit30=ptempbuffer->bit15;pbuffer->bit31=ptempbuffer->bit7;
	pbuffer->bit32=ptempbuffer->bit56;pbuffer->bit33=ptempbuffer->bit48;
	pbuffer->bit34=ptempbuffer->bit40;pbuffer->bit35=ptempbuffer->bit32;
	pbuffer->bit36=ptempbuffer->bit24;pbuffer->bit37=ptempbuffer->bit16;
	pbuffer->bit38=ptempbuffer->bit8; pbuffer->bit39=ptempbuffer->bit0;
	pbuffer->bit40=ptempbuffer->bit58;pbuffer->bit41=ptempbuffer->bit50;
	pbuffer->bit42=ptempbuffer->bit42;pbuffer->bit43=ptempbuffer->bit34;
	pbuffer->bit44=ptempbuffer->bit26;pbuffer->bit45=ptempbuffer->bit18;
	pbuffer->bit46=ptempbuffer->bit10;pbuffer->bit47=ptempbuffer->bit2;
	pbuffer->bit48=ptempbuffer->bit60;pbuffer->bit49=ptempbuffer->bit52;
	pbuffer->bit50=ptempbuffer->bit44;pbuffer->bit51=ptempbuffer->bit36;
	pbuffer->bit52=ptempbuffer->bit28;pbuffer->bit53=ptempbuffer->bit20;
	pbuffer->bit54=ptempbuffer->bit12;pbuffer->bit55=ptempbuffer->bit4;
	pbuffer->bit56=ptempbuffer->bit62;pbuffer->bit57=ptempbuffer->bit54;
	pbuffer->bit58=ptempbuffer->bit46;pbuffer->bit59=ptempbuffer->bit38;
	pbuffer->bit60=ptempbuffer->bit30;pbuffer->bit61=ptempbuffer->bit22;
	pbuffer->bit62=ptempbuffer->bit14;pbuffer->bit63=ptempbuffer->bit6;

	/*Break buffer into two parts*/
	for(i=0;i<4;i++)
	{
		redbuffer[i]=buffer[i];
		bluebuffer[i]=buffer[i+4];
	}

	for(x=15;x>=0;x--)
	{	
		for(i=0;i<4;i++)
		{
			temp[i]=bluebuffer[i];
		}
		/*Expation and permutation*/
		EPbuffer.k0=rightpart->bit31; EPbuffer.k1=rightpart->bit0;
		EPbuffer.k2=rightpart->bit1;  EPbuffer.k3=rightpart->bit2;
		EPbuffer.k4=rightpart->bit3;  EPbuffer.k5=rightpart->bit4;
		EPbuffer.k6=rightpart->bit3;  EPbuffer.k7=rightpart->bit4;
		EPbuffer.k8=rightpart->bit5;  EPbuffer.k9=rightpart->bit6;
		EPbuffer.k10=rightpart->bit7; EPbuffer.k11=rightpart->bit8;
		EPbuffer.k12=rightpart->bit7; EPbuffer.k13=rightpart->bit8;
		EPbuffer.k14=rightpart->bit9; EPbuffer.k15=rightpart->bit10;
		EPbuffer.k16=rightpart->bit11;EPbuffer.k17=rightpart->bit12;
		EPbuffer.k18=rightpart->bit11;EPbuffer.k19=rightpart->bit12;
		EPbuffer.k20=rightpart->bit13;EPbuffer.k21=rightpart->bit14;
		EPbuffer.k22=rightpart->bit15;EPbuffer.k23=rightpart->bit16;
		EPbuffer.k24=rightpart->bit15;EPbuffer.k25=rightpart->bit16;
		EPbuffer.k26=rightpart->bit17;EPbuffer.k27=rightpart->bit18;
		EPbuffer.k28=rightpart->bit19;EPbuffer.k29=rightpart->bit20;
		EPbuffer.k30=rightpart->bit19;EPbuffer.k31=rightpart->bit20;
		EPbuffer.k32=rightpart->bit21;EPbuffer.k33=rightpart->bit22;
		EPbuffer.k34=rightpart->bit23;EPbuffer.k35=rightpart->bit24;
		EPbuffer.k36=rightpart->bit23;EPbuffer.k37=rightpart->bit24;
		EPbuffer.k38=rightpart->bit25;EPbuffer.k39=rightpart->bit26;
		EPbuffer.k40=rightpart->bit27;EPbuffer.k41=rightpart->bit28;
		EPbuffer.k42=rightpart->bit27;EPbuffer.k43=rightpart->bit28;
		EPbuffer.k44=rightpart->bit29;EPbuffer.k45=rightpart->bit30;
		EPbuffer.k46=rightpart->bit31;EPbuffer.k47=rightpart->bit30;

		/*Get subkey from buffer*/
		switch(x)
		{
		case 0:
			subkey=&subkey1;
			break;
		case 1:
			subkey=&subkey2;
			break;
		case 2:
			subkey=&subkey3;
			break;
		case 3:
			subkey=&subkey4;
			break;
		case 4:
			subkey=&subkey5;
			break;
		case 5:
			subkey=&subkey6;
			break;
		case 6:
			subkey=&subkey7;
			break;
		case 7:
			subkey=&subkey8;
			break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲永久免费视频| 有坂深雪av一区二区精品| 亚洲午夜久久久久久久久电影院| 波多野结衣在线一区| 国产网站一区二区| 久久蜜臀中文字幕| 日日摸夜夜添夜夜添国产精品 | 欧美在线视频日韩| 国产精品高潮久久久久无| av中文字幕一区| 亚洲综合在线电影| 欧美日韩精品一区二区三区| 亚洲最大色网站| 欧美一区二区在线不卡| 蜜臀久久久99精品久久久久久| 制服丝袜av成人在线看| 激情欧美一区二区三区在线观看| 欧美一区二区免费观在线| 亚洲综合色网站| 久久影院电视剧免费观看| 成人精品一区二区三区四区| 91精品国产色综合久久不卡蜜臀 | 国产久卡久卡久卡久卡视频精品| 另类小说色综合网站| 制服丝袜亚洲网站| 国产在线精品视频| 99久久免费视频.com| 天天射综合影视| 亚洲欧美激情插| 久久久久国产成人精品亚洲午夜| 91久久精品网| va亚洲va日韩不卡在线观看| 蜜臀91精品一区二区三区| 日韩久久一区二区| 国产欧美久久久精品影院| 欧美一二三四区在线| 欧美在线观看一二区| 91玉足脚交白嫩脚丫在线播放| 国产一区二区三区免费播放| 免费人成黄页网站在线一区二区| 日韩国产欧美在线视频| 在线亚洲高清视频| 男人的天堂久久精品| 欧美男同性恋视频网站| 中文字幕国产精品一区二区| 国产精品综合视频| 欧美猛男gaygay网站| 国产一区二区三区在线观看免费视频| 亚洲高清一区二区三区| 亚洲人精品一区| 日韩毛片精品高清免费| 中文字幕一区日韩精品欧美| 日韩欧美久久久| 欧美高清视频一二三区| 欧美剧情电影在线观看完整版免费励志电影 | 波多野结衣亚洲| 色吧成人激情小说| 日韩精品一区二区三区四区| 日韩免费高清av| 国产片一区二区| 国产精品久久久99| 豆国产96在线|亚洲| 色婷婷久久久亚洲一区二区三区 | 亚洲一区二区免费视频| 国产综合色精品一区二区三区| 国产精品一区二区在线观看网站| 蜜臀久久久99精品久久久久久| 亚洲女性喷水在线观看一区| 1024亚洲合集| 蜜桃一区二区三区四区| 国产一区欧美二区| 国产一区高清在线| 国产成人精品亚洲日本在线桃色| 国产白丝精品91爽爽久久| 国产成人免费高清| 日韩视频一区二区在线观看| 国产精品人人做人人爽人人添| 一个色妞综合视频在线观看| 久久精品国产精品青草| 日本韩国一区二区三区视频| 欧美一区二区三区视频免费| 国产精品污网站| 奇米影视在线99精品| 成人久久久精品乱码一区二区三区| 国产二区国产一区在线观看| 在线观看av一区| 中文av字幕一区| 99国产欧美久久久精品| 日韩久久精品一区| 亚洲精品乱码久久久久| 美女一区二区三区| 欧美日韩美少妇| ...av二区三区久久精品| 久久精品国产在热久久| 51午夜精品国产| 日本中文字幕不卡| 欧美伦理电影网| 天天操天天干天天综合网| 欧美天堂一区二区三区| 久久老女人爱爱| 高清日韩电视剧大全免费| 国产日韩亚洲欧美综合| 国产揄拍国内精品对白| 精品福利二区三区| 韩国av一区二区三区四区| 久久久久久电影| 不卡电影一区二区三区| 亚洲激情第一区| 欧美一区二区三区人| 老司机免费视频一区二区三区| 久久久久久久久久久久电影| 99视频国产精品| 国内精品免费在线观看| 国产欧美日韩激情| 欧美精品日韩精品| 成人avav在线| 青青草国产成人av片免费| 中文字幕乱码日本亚洲一区二区| 色婷婷精品大视频在线蜜桃视频| 国产精品久久久久久户外露出 | 国产精品电影院| 精品国产乱码久久久久久久久 | 99久久久久久| 国产在线精品不卡| 亚洲国产精品一区二区久久 | 色呦呦国产精品| 粉嫩高潮美女一区二区三区 | av午夜一区麻豆| 国产福利一区二区三区| 捆绑紧缚一区二区三区视频| 香蕉久久夜色精品国产使用方法| 亚洲视频一区二区在线| 国产精品久久久久久福利一牛影视 | 色婷婷激情久久| 一本色道久久综合亚洲91| jlzzjlzz亚洲女人18| 国产剧情一区二区三区| 蜜桃av噜噜一区| 久久av中文字幕片| 久久不见久久见免费视频1| 日本va欧美va瓶| 久久成人羞羞网站| 日韩精品91亚洲二区在线观看 | 欧美一区二区三区免费大片 | 午夜精品福利一区二区蜜股av | 欧美精品三级日韩久久| 国产日产欧美一区二区视频| 日韩毛片精品高清免费| 亚洲精品va在线观看| 美女视频一区二区三区| 9i看片成人免费高清| 在线视频国产一区| 欧美国产激情二区三区 | 精品国产a毛片| 国产精品美女久久久久高潮| 亚洲欧洲三级电影| 国产欧美1区2区3区| 午夜不卡av在线| 91亚洲精品久久久蜜桃网站| 亚洲国产精品t66y| 国产suv精品一区二区三区| 欧美一级日韩一级| 青娱乐精品视频| 日韩免费一区二区| 亚洲影视在线观看| 色婷婷香蕉在线一区二区| 亚洲精品免费视频| 在线观看中文字幕不卡| 亚洲欧美在线高清| 欧美视频在线不卡| 亚洲午夜日本在线观看| 91社区在线播放| 国产精品乱码一区二三区小蝌蚪| 久久爱另类一区二区小说| 久久久久久久久一| 日本丶国产丶欧美色综合| 国产精品区一区二区三区| av在线播放成人| 久久爱另类一区二区小说| 国产欧美1区2区3区| 91免费小视频| 久久99精品国产麻豆婷婷洗澡| 精品剧情在线观看| 色偷偷久久人人79超碰人人澡| 亚洲chinese男男1069| 久久久www成人免费毛片麻豆| 丁香五精品蜜臀久久久久99网站 | 亚洲欧美韩国综合色| 久久新电视剧免费观看| 91福利精品视频| 成人免费av网站| 国产精品资源网站| 免费成人av资源网| 亚洲二区在线观看| 国产精品久久久久婷婷| 久久九九国产精品| 日韩久久精品一区| 制服丝袜亚洲网站| 精品久久久久99| 欧美一区二区三区性视频|