des1.h

来自「DES 实现 包括 纯DES 3DES 和 CBC」· C头文件 代码 · 共 55 行

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