📄 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 + -