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

📄 des.h

📁 自己编写的DES加密/解密完整源程序, Windows界面.是用VC6MFC编写的.包括ECB和CBC两种模式.
💻 H
字号:
// DES.h: interface for the DES class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DES_H__FB8EED66_C05F_4BE0_92DF_D9C6A146E2E0__INCLUDED_)
#define AFX_DES_H__FB8EED66_C05F_4BE0_92DF_D9C6A146E2E0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class DES  
{
public:		//公开变量
	static int ENCRYPT;	//表示加密
	static int DECRYPT;	//表示解密

public:		//公开方法
	DES();
	virtual ~DES();
	static void test(bool binArray[],int length,char *msg,int columns); //测试用函数,测试完成后删除
	static void getSubKeys(char key[8]);//产生子密钥的函数
	static void desGroup(char in[8],char out[8],int operate);//单组加密/解密函数
	static void desGroupBin(bool in_out[64],int operate);//单组二进制加密/解密
	static void desECB(char *in,char *out,int length,int operate);//ECB模式加密/解密函数
	static void desCBC(char *in,char *out,char *iv,int length,int operate);//CBC模式加密/解密函数
	static void desCFB(char *in,char *out,char *iv,int length,int operate,int width);//CFB模式加密/解密函数
	static void desOFB(char *in,char *out,char *iv,int length,int width);//OFB模式加密/解密函数

private:	//私有方法
	static void PC1(bool in[64],bool out[56]);//置换选择1
	static void rotateL(int loop,bool in[56]);//循环左移位
	static void PC2(bool in[56],bool out[48]);//置换选择2
	static void expand(bool in[32],bool out[48]);//选择扩展运算
	static void XOR(bool in1_out[],bool in2[],int length);//异或运算
	static void sBoxF(bool in[48],bool out[32]);//S盒运算
	static void PF(bool in[32]);//置换P运算
	static void desF(bool in[32],bool subKey[48],bool out[32]);//F函数
	static void round(bool inL[32],bool inR[32],bool subKey[48]);//轮加密函数
	static void txt2Bin(char in[],bool out[],int count);//文本与二进制转换函数
	static void IP(bool in[64]);//初始置换
	static void exchange(bool in[64]);//左右交换
	static void rvsIP(bool in[64]);//逆初始置换
	static void bin2Txt(bool in[],char out[],long int count);//二进制与文本转换函数
	static void XORch(char in1_out[],char in2[],int length);//字符数组异或 
	static void shiftL(bool in1_out[64],bool in2[],int count);//左移位函数

private:	//私有变量
	static int PC1matrix[56];	//置换选择1矩阵
	static int rLmatrix[16];	//记录每一轮左循环移位位数的数组
	static int PC2matrix[48];	//置换选择2矩阵
	static int Ematrix[48];	//选择扩展运算E矩阵
	static char sBox[8][4][16];	//S盒
	static int Pmatrix[32];	//置换(P)运算矩阵
	static int IPmatrix[64];	//初始置换矩阵
	static int rvsIPmatrix[64];	//逆初始置换矩阵
	static bool subKeys[16][48];	//子密钥数组

};

#endif // !defined(AFX_DES_H__FB8EED66_C05F_4BE0_92DF_D9C6A146E2E0__INCLUDED_)

⌨️ 快捷键说明

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