des.h

来自「开发环境:Visual C++ .net2003 功能介绍:实现DES的加密和」· C头文件 代码 · 共 47 行

H
47
字号
#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 + =
减小字号Ctrl + -
显示快捷键?