test.cpp

来自「整理3des算法,采用C++类实现,便于移植」· C++ 代码 · 共 55 行

CPP
55
字号
#define     POLYNOMIAL 0x04c11db7
static short _First = 1;                       /*初始化_CrcTable[256]的标志,使其只初始化一次*/
static unsigned long  _CrcTable[256];                  /*Calculate CRC32*/
#ifndef _DES_ENCRIPT_
#define _DES_ENCRIPT_ 

#include "DESserver.h"
typedef unsigned short      WORD;
typedef unsigned long       DWORD;
#define KEY_LENGTH 16
enum	
{
	ENCRYPT	=	0,	
	DECRYPT			
};


enum
{
	ECB		=	0,	
	CBC				
};
#endif
/*
输入参数:bType=ENCRYPT:加扰,bType=DECRYPT:解扰
          In,输入数据
          datalen,输入数据长度
          Key,加密密钥
          keylen,密钥长度
输出参数: Out,输出数据
 
*/
bool RunDes(bool bType,unsigned char* In,unsigned char* Out,unsigned long datalen,const unsigned char* Key,const unsigned char keylen)
{

	if(!(In && Out && Key && datalen && keylen>=8))
		return false;

	if(datalen & 0x00000007)
		return false;
	unsigned char * ttt = new unsigned char[24];
	unsigned char * inttt = new unsigned char[24];
	unsigned char * keyttt = new unsigned char[24];
	//des3key((unsigned char *)Key,EN0);

	DESserver::GetInstance()->Lock();
	if (bType==ENCRYPT)
		DESserver::GetInstance()->des3key((unsigned char *)Key,EN0);
	else
		DESserver::GetInstance()->des3key((unsigned char *)Key,DE1);
	for (int ii=0,jj=datalen; ii<jj; ii=ii+8,Out+=8,In+=8)
		DESserver::GetInstance()->Ddes((unsigned char *)In,(unsigned char *)Out);
	DESserver::GetInstance()->Unlock();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?