⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 整理3des算法,采用C++类实现,便于移植
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -