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