📄 des.h
字号:
#ifndef CORE_DES_H
#define CORE_DES_H
#pragma once
class DES
{
public:
DES();
~DES();
// In 与 Out 可使用同一缓冲,此时加/解密后的数据将覆盖输入缓冲区(In)的内容
// 输出缓冲区(Out)的长度 >= ((datalen+7)/8)*8,即比datalen大的且是8的倍数的最小正整数
// 当keylen>8时系统自动使用3次DES加/解密,否则使用标准DES加/解密.超过16字节后只取前16字节
//DES加密
//char* Out:输出加密以后的子串
//char* In:输入需要加密的字串
//long datalen:原始字串长度
//const char* Key:加密钥匙字串
//int keylen:加密钥匙字串长度
static bool ENCRYPT(char* Out,char* In,long datalen,const char* Key,int keylen);
//DES解密
//char* Out:输出解密以后的子串
//char* In:输入需要解密的字串
//long datalen:原始字串长度
//const char* Key:加密钥匙字串
//int keylen:加密钥匙字串长度
static bool DECRYPT(char* Out,char* In,long datalen,const char* Key,int keylen);
};
#endif//CORE_DES_H
/******************************************************************************
//以下为测试范例
//--- DesTest.cpp ---//
#include "Des.h"
#include "stdio.h"
#include "string.h"
#include "memory.h"
void PrintBinData(char *pack,int len)
{
static char szBuffer[4096 * 3];
char *p = szBuffer;
if(len > 4096 - 1)
len = 4096 - 1;
for(int i=0;i<len;i++)
{
sprintf(p,"%02x ",(unsigned char)pack[i]); //写一个字节的二进制数据
p += 3;
}
*p = '\0'; //结束字串,不要漏掉
printf(szBuffer);
}
void main()
{
char source[]="Welcome to Http://Bogy.cn.\n";
char *key="f32,ly6+)df15j3";
char outbuffer[255];
memset(outbuffer, 0, sizeof(outbuffer));
strcpy(outbuffer, source);
printf("\n加密前:[%s]\n",outbuffer);
DEC_ENCRYPT(outbuffer, outbuffer, sizeof(source), key, sizeof(key));
printf("\n加密后:\n");
PrintBinData(outbuffer,((sizeof(source)+7)/8)*8);
printf("\n\n");
PrintBinData(outbuffer,sizeof(outbuffer));
printf("\n");
DEC_DECRYPT(outbuffer, outbuffer, sizeof(source), key, sizeof(key));
printf("\n解密后:[%s]",outbuffer);
getchar();
}
******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -