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

📄 des.h

📁 开发环境:Visual C++ .net2003 功能介绍:实现DES的加密和解密。
💻 H
字号:
#pragma once
#include<iostream>
using namespace std;

#define BLOCK_SIZE 64
#define BLOCK_SIZE1 56
#define BLOCK_SIZE2 48

enum SHIFT{RIGHTSHIFT=0, LEFTSHIFT=1};
enum CODE{DECODE=0, ENCODE=1};

class CDES
{
public:
	// 初始化操作
	CDES(void);
	~CDES(void);
	//作IP变换或反变换,以达混乱的目的
	void InitialProcess(unsigned char  IP_RIP[], unsigned char  message[], int IP_RIP_size = BLOCK_SIZE, int msg_size = BLOCK_SIZE);

protected:
	// 左边的块
	unsigned char *m_leftBlock;
	// 右边的块
	unsigned char *m_rightBlock;

public:
	
	void DES_Compute(unsigned char  message[], unsigned char  key[], bool isEncode = ENCODE);

private:
	void Exchange_HalfBlock(void);
	// 将Bit流转化成Byte
	void Array_XOR(unsigned char  blockdest[], unsigned char  blocksource[], int block_size);

	void TurnConvert(unsigned char  key[], int turn_num, bool isEncode = ENCODE);
	//子密钥生成
	void GenSubKey(unsigned char  key[], unsigned char  sub_key[], int order, int keyLen = BLOCK_SIZE1, bool isEncode = ENCODE);
	void ShiftKey(unsigned char  key[], int keyLen, int shiftTimes, int isLShift = LEFTSHIFT);
	void SBoxConvert(unsigned char  message[], int msgLen = BLOCK_SIZE2);
	void ConvertByteToBit(unsigned char  destBitValue[], unsigned char sourceByteValue);
	void ConvertBitToByte(unsigned char &destByte, unsigned char  sourceBits[]);
	void ShowBlock(void);
public:
	void ShowSubKey(unsigned char sub_key[], int size = 56);
};

⌨️ 快捷键说明

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