⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 destest.h

📁 des的完整实现
💻 H
字号:
#pragma once
#include "stdio.h"

struct bits{
	bool	bit[64];
	int		totalbit;
};

struct chars{
	char	ch[8];
	int		totalchar;
};

struct bitarray
{
	bits bitarr[16];
};


void chartobits(chars ch,bits *bts);
void bitstochar(bits bts,chars *ch);
void bitmaping(int bitmapno,bits inbts,bits *outbts);
void initIP(bits bts64,bits *Lbts32,bits *Rbts32);
void finalIP(bits Lbts32,bits Rbts32,bits *bts64);
void leftshift(bits *bit28,int times);
void pc1tran(bits bts64,bits *Cbts28,bits *Dbts28);
void pc2tran(bits Cbts28,bits Dbts28,bits *Kbts48);
void keygen(bits key,bitarray *subkey);
void etran(bits bts32,bits *bts48);
void bittosboxpos(bits bts48,int boxno,int *row,int *col);
void sboxtran(bits bts48,bits *bts32);
void ptran(bits bts32,bits *fout);
void ftran(bits inbts32,bits keyi,bits *fres);
void XOR(bits bts1,bits bts2,bits *xorres);
void desblock(chars intext8,chars key,bool encode,chars *outtext8);
void descoding(char mfile[],char key[],char cfile[],bool codedir);
void desencode(char mfile[],char key[],char cfile[]);
void desdecode(char mfile[],char key[],char cfile[]);
void dispfile(char fn[]);	


static int ip[64]={	58,50,42,34,26,18,10,2,
					60,52,44,36,28,20,12,4,
					62,54,46,38,30,22,14,6,
					64,56,48,40,32,24,16,8,
					57,49,41,33,25,17,9,1,
					59,51,43,35,27,19,11,3,
					61,53,45,37,29,21,13,5,
					63,55,47,39,31,23,15,7};

static int fp[64]={ 40,8,48,16,56,24,64,32,
					39,7,47,15,55,23,63,31,
					38,6,46,14,54,22,62,30,
					37,5,45,13,53,21,61,29,
					36,4,44,12,52,20,60,28,
					35,3,43,11,51,19,59,27,
					34,2,42,10,50,18,58,26,
					33,1,41,9,49,17,57,25};

static int e[48]={ 32,1,2,3,4,5,
				   4,5,6,7,8,9,
				   8,9,10,11,12,13,
				   12,13,14,15,16,17,
				   16,17,18,19,20,21,
				   20,21,22,23,24,25,
				   24,25,26,27,28,29,
				   28,29,30,31,32,1};

static int p[32]= { 16,7,20,21,
					29,12,28,17,
					1,15,23,26,
					5,18,31,10,
					2,8,24,14,
					32,27,3,9,
					19,13,30,6,
					22,11,4,25};

static int sbox[8][64]={
			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,

			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,
			
			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,

			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,

			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,

			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,

			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,

			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};


static int pc1[56]={ 57,49,41,33,25,17,9,
					 1,58,50,42,34,26,18,
					 10,2,59,51,43,35,27,
					 19,11,3,60,52,44,36,
					 63,55,47,39,31,23,15,
					 7,62,54,46,38,30,22,
					 14,6,61,53,45,37,29,
					 21,13,5,28,20,12,4};

static int pc2[48]={ 14,17,11,24,1,5,
					 3,28,15,6,21,10,
					 23,19,12,4,26,8,
					 16,7,27,20,13,2,
					 41,52,31,37,47,55,
					 30,40,51,45,33,48,
					 44,49,39,56,34,53,
					 46,42,50,36,29,32};

static int ls[16]={ 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 };

						

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -