亚洲欧美第一页_禁久久精品乱码_粉嫩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 <fcntl.h>
#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;/*Pointer of plaintext/ciphertext storage*/
	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);

	/*Make plaintext data into proper order*/
	for(i=0;i<8;i++)
	{
		tempbuffer[i]=buffer[i];
	}
	pbuffer->bit0=ptempbuffer->bit7;  pbuffer->bit1=ptempbuffer->bit6;
	pbuffer->bit2=ptempbuffer->bit5;  pbuffer->bit3=ptempbuffer->bit4;
	pbuffer->bit4=ptempbuffer->bit3;  pbuffer->bit5=ptempbuffer->bit2;
	pbuffer->bit6=ptempbuffer->bit1;  pbuffer->bit7=ptempbuffer->bit0;
	pbuffer->bit8=ptempbuffer->bit15; pbuffer->bit9=ptempbuffer->bit14;
	pbuffer->bit10=ptempbuffer->bit13;pbuffer->bit11=ptempbuffer->bit12;
	pbuffer->bit12=ptempbuffer->bit11;pbuffer->bit13=ptempbuffer->bit10;
	pbuffer->bit14=ptempbuffer->bit9; pbuffer->bit15=ptempbuffer->bit8;
	pbuffer->bit16=ptempbuffer->bit23;pbuffer->bit17=ptempbuffer->bit22;
	pbuffer->bit18=ptempbuffer->bit21;pbuffer->bit19=ptempbuffer->bit20;
	pbuffer->bit20=ptempbuffer->bit19;pbuffer->bit21=ptempbuffer->bit18;
	pbuffer->bit22=ptempbuffer->bit17;pbuffer->bit23=ptempbuffer->bit16;
	pbuffer->bit24=ptempbuffer->bit31;pbuffer->bit25=ptempbuffer->bit30;
	pbuffer->bit26=ptempbuffer->bit29;pbuffer->bit27=ptempbuffer->bit28;
	pbuffer->bit28=ptempbuffer->bit27;pbuffer->bit29=ptempbuffer->bit26;
	pbuffer->bit30=ptempbuffer->bit25;pbuffer->bit31=ptempbuffer->bit24;
	pbuffer->bit32=ptempbuffer->bit39;pbuffer->bit33=ptempbuffer->bit38;
	pbuffer->bit34=ptempbuffer->bit37;pbuffer->bit35=ptempbuffer->bit36;
	pbuffer->bit36=ptempbuffer->bit35;pbuffer->bit37=ptempbuffer->bit34;
	pbuffer->bit38=ptempbuffer->bit33;pbuffer->bit39=ptempbuffer->bit32;
	pbuffer->bit40=ptempbuffer->bit47;pbuffer->bit41=ptempbuffer->bit46;
	pbuffer->bit42=ptempbuffer->bit45;pbuffer->bit43=ptempbuffer->bit44;
	pbuffer->bit44=ptempbuffer->bit43;pbuffer->bit45=ptempbuffer->bit42;
	pbuffer->bit46=ptempbuffer->bit41;pbuffer->bit47=ptempbuffer->bit40;
	pbuffer->bit48=ptempbuffer->bit55;pbuffer->bit49=ptempbuffer->bit54;
	pbuffer->bit50=ptempbuffer->bit53;pbuffer->bit51=ptempbuffer->bit52;
	pbuffer->bit52=ptempbuffer->bit51;pbuffer->bit53=ptempbuffer->bit50;
	pbuffer->bit54=ptempbuffer->bit49;pbuffer->bit55=ptempbuffer->bit48;
	pbuffer->bit56=ptempbuffer->bit63;pbuffer->bit57=ptempbuffer->bit62;
	pbuffer->bit58=ptempbuffer->bit61;pbuffer->bit59=ptempbuffer->bit60;
	pbuffer->bit60=ptempbuffer->bit59;pbuffer->bit61=ptempbuffer->bit58;
	pbuffer->bit62=ptempbuffer->bit57;pbuffer->bit63=ptempbuffer->bit56;
	/*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=0;x<16;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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久97国产精华液好用吗| 在线视频你懂得一区| 亚洲高清免费一级二级三级| 成人免费在线视频| 椎名由奈av一区二区三区| 欧美国产综合一区二区| 日本一区二区在线不卡| 久久精品夜色噜噜亚洲aⅴ| 国产性做久久久久久| 国产精品污网站| 亚洲欧美国产77777| 亚洲激情自拍偷拍| 午夜精品福利一区二区三区av| 日韩av一区二区在线影视| 欧美a一区二区| 国产高清精品久久久久| 成人午夜短视频| 色偷偷88欧美精品久久久| 欧美在线|欧美| 欧美大白屁股肥臀xxxxxx| 久久久国产精华| 亚洲视频中文字幕| 日本中文字幕一区| 国产乱妇无码大片在线观看| 99综合电影在线视频| 欧美视频在线不卡| 精品国产一区二区三区久久久蜜月| 久久久久9999亚洲精品| 夜夜爽夜夜爽精品视频| 久久国产精品第一页| 99麻豆久久久国产精品免费优播| 在线看不卡av| 久久先锋影音av鲁色资源网| 亚洲素人一区二区| 久久国产精品区| 色婷婷亚洲精品| 精品日韩在线观看| 亚洲一区二区在线免费观看视频| 裸体健美xxxx欧美裸体表演| 91农村精品一区二区在线| 欧美一级理论性理论a| 1区2区3区国产精品| 美腿丝袜亚洲色图| 91九色02白丝porn| 久久精品一区二区三区不卡| 五月婷婷激情综合| 成人av中文字幕| 精品国免费一区二区三区| 一区二区在线免费| 成人性视频网站| 日韩欧美一级二级| 亚洲电影一区二区三区| 成人a区在线观看| 欧美精品一区二区高清在线观看| 一区二区欧美精品| av电影在线观看一区| 久久在线免费观看| 日韩专区在线视频| 欧美亚一区二区| 亚洲精品高清在线| 91在线一区二区| 中文字幕乱码久久午夜不卡| 韩国成人在线视频| 欧美一二三区在线观看| 亚洲午夜激情av| 在线国产电影不卡| 一区二区三区免费网站| 成人国产精品免费网站| 国产丝袜美腿一区二区三区| 精品一区二区三区欧美| 日韩欧美一区二区三区在线| 日本亚洲一区二区| 在线电影欧美成精品| 午夜精品123| 在线电影国产精品| 日本不卡一区二区| 7777精品伊人久久久大香线蕉的 | 日韩av一级片| 欧美日韩高清一区二区三区| 亚洲综合在线免费观看| 欧日韩精品视频| 亚洲一区二区三区中文字幕 | 91亚洲精华国产精华精华液| 国产亚洲精品精华液| 国产精品1024| 国产精品国产三级国产普通话99| 国产不卡视频一区| 国产精品第五页| 在线视频观看一区| 丝袜诱惑制服诱惑色一区在线观看 | 日韩欧美www| 国产高清不卡一区二区| 中文字幕在线一区二区三区| 99r国产精品| 亚洲成av人片一区二区三区| 日韩一区二区三区在线| 国产精品香蕉一区二区三区| 亚洲色欲色欲www| 精品视频999| 极品少妇xxxx精品少妇偷拍 | 亚洲私人黄色宅男| 欧美日韩久久久一区| 美女看a上一区| 中文字幕的久久| 在线观看一区不卡| 精品一区二区三区的国产在线播放| 2020国产精品久久精品美国| 成人午夜在线视频| 五月天网站亚洲| 国产肉丝袜一区二区| 91精品福利在线| 国产在线观看一区二区| 伊人开心综合网| 久久精品亚洲一区二区三区浴池| 一本在线高清不卡dvd| 美女脱光内衣内裤视频久久影院| 国产精品色一区二区三区| 欧美日韩亚洲综合一区| 成人禁用看黄a在线| 日本va欧美va瓶| 一区二区久久久久| 久久久久久9999| 56国语精品自产拍在线观看| 成人h动漫精品一区二区 | 日韩一区二区三区精品视频| proumb性欧美在线观看| 天堂精品中文字幕在线| 亚洲美女偷拍久久| 国产午夜精品一区二区三区四区| 欧美午夜精品免费| 91亚洲精品一区二区乱码| 国产一区二区精品久久99| 亚洲综合在线第一页| 国产精品嫩草影院av蜜臀| 精品久久久久久久久久久院品网| 日本乱人伦一区| 成人av中文字幕| 国产白丝网站精品污在线入口| 免费在线观看不卡| 日韩av电影天堂| 午夜精品在线看| 亚洲一区二区三区国产| 亚洲精品少妇30p| 中文字幕一区二| 中文字幕一区不卡| 中文字幕一区二区在线观看| 国产欧美日韩不卡| 精品国产乱码久久久久久闺蜜 | 丝瓜av网站精品一区二区| 亚洲日本成人在线观看| 国产精品色一区二区三区| 日本一区二区视频在线观看| 国产日产欧美精品一区二区三区| 日韩女优毛片在线| 日韩美女在线视频| 精品成人一区二区三区| 欧美电影免费观看高清完整版| 91精品国产综合久久精品app | 国产成人亚洲精品青草天美 | 99久久婷婷国产综合精品| 丁香桃色午夜亚洲一区二区三区| 国产剧情一区二区三区| 国产综合久久久久久久久久久久| 黄色日韩三级电影| 国产精品一区在线| 成人aa视频在线观看| 在线亚洲高清视频| 欧美日韩国产123区| 精品国产乱码久久久久久久 | 成人av免费网站| 91麻豆swag| 欧美美女网站色| www国产亚洲精品久久麻豆| 亚洲国产精品传媒在线观看| 国产精品对白交换视频| 亚洲电影第三页| 国产一区啦啦啦在线观看| 懂色av一区二区三区蜜臀| 一本久道久久综合中文字幕| 欧美性生交片4| 2020国产精品久久精品美国| 中文字幕欧美一| 日本不卡在线视频| 成人激情午夜影院| 欧美日韩国产另类不卡| 国产午夜精品福利| 一个色妞综合视频在线观看| 久久99精品久久久久久久久久久久| 国产成人精品亚洲日本在线桃色 | 欧美精品亚洲一区二区在线播放| 亚洲精品一区二区三区蜜桃下载| 亚洲色图欧美激情| 久久91精品国产91久久小草| 91精品福利在线| 久久久久97国产精华液好用吗| 亚洲激情六月丁香| 国产乱妇无码大片在线观看| 欧美色图在线观看| 国产清纯白嫩初高生在线观看91| 亚洲国产综合人成综合网站|