📄 des1.h
字号:
// DES1.h: interface for the CDES class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DES1_H__E14C857B_A299_45F6_B8D5_4ECAF284180D__INCLUDED_)
#define AFX_DES1_H__E14C857B_A299_45F6_B8D5_4ECAF284180D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "afxtempl.h"
//#include "tables.h"
//typedef CArray<char,char&> ARE;
//typedef CArray<ARE*,ARE*&> CCharArray;
#include "tablearray.h"
class CDES
{
public:
//pure DES
void Crypto(CTableArray<ULONG> &,CTableArray<ULONG> &,BOOL,CTableArray<ULONG>&result);
unsigned char * Crypto(UCHAR text[8],UCHAR key[8],BOOL DIRECTION);
//DES in CBC mode
void CBCDES(CTableArray<ULONG> &Text,CTableArray<ULONG> &KEY,BOOL DIRECTION,CTableArray<ULONG>&result);
unsigned char * CBCDES(UCHAR text[8],UCHAR key[8],BOOL DIRECTION);
//3DES
void TripleDES(CTableArray<ULONG> &Text,CTableArray<ULONG> &KEY1,CTableArray<ULONG> &KEY2,BOOL DIRECTION,CTableArray<ULONG>&result);
unsigned char * TripleDES(UCHAR text[8],UCHAR key1[8],UCHAR key2[8],BOOL DIRECTION);
//3DES in CBC mode
void CBC3DES(CTableArray<ULONG> &Text,CTableArray<ULONG> &KEY1,CTableArray<ULONG>&KEY2,BOOL DIRECTION,CTableArray<ULONG>&result);
unsigned char * CBC3DES(UCHAR text[8],UCHAR key1[8],UCHAR key2[8],BOOL DIRECTION);
//functional methods
resetCBC();
void KeyGen(CTableArray<ULONG>& KEY,int time,CTableArray<ULONG>&result); //子密钥产生
void SBOX(CTableArray<ULONG> &aftxor,CTableArray<ULONG> &result);//S盒
ULONG f(ULONG &R,CTableArray<ULONG>&K);//f函数
static CString * showBit(CTableArray<ULONG>* in); //显示BIT
void Permute(CTableArray<ULONG>&src,CTableArray<UINT>&reftbl,CTableArray<ULONG>&result);//置换
static enum{ENCRYPT=TRUE,DECRYPT=FALSE};
CDES();
virtual ~CDES();
private:
CTableArray<ULONG> LastCipher;
ULONG lastcipher[2];
};
#endif // !defined(AFX_DES1_H__E14C857B_A299_45F6_B8D5_4ECAF284180D__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -