📄 cpryto.h
字号:
#pragma once
#include <wincrypt.h>
struct TextBuffer
{
DWORD length;
unsigned char buffer[4096];
};
class CCpryto
{
public:
CCpryto(void);
~CCpryto(void);
struct TextBuffer oriText,midText,binText;
bool Process(bool flag);
CString Process2(void);
CString Process3(void);
CString Process4(CFile *dxpFile);
//Protel XOR 编解码
bool EnXorCode(BYTE* inBuffer,int len);
// 数值化
int DeCode(BYTE *inBuffer,BYTE *outBuffer,int inLen);
//文本化
int EnCode(BYTE *inBuffer,BYTE *outBuffer,int inLen);
private:
static const unsigned char listTxt2Bin[];
static const unsigned char listBin2Txt[];
//static const unsigned char SelfSign[];
static const unsigned char IwesunServiceSign[];
static const unsigned char AltiumServiceSign[];
static const unsigned char IwesunDXPSign[];
static const unsigned char AltiumDXPSign[];
public:
static const BYTE KeyBlobPubProtel[];
static const BYTE KeyBlobPriIWESUNcon[];
public:
static const BYTE KeyBlobPubIWESUNcon[];
private:
//CSP句柄
HCRYPTPROV hCryptProvProtel;
//CSP句柄
HCRYPTPROV hCryptProvIWESUN;
// 公钥句柄
HCRYPTKEY hPubKeyProtel;
// 公钥句柄
HCRYPTKEY hPubKeyIWESUN;
HCRYPTKEY hPriKeyIWESUN;
BYTE *prKeyBlob;
BYTE *pbKeyBlob;
// 哈希句柄
HCRYPTHASH hHashProtel;
public:
//获取或创建 CSP
bool CSPCreate(HCRYPTPROV *hProv,LPCSTR UserName,DWORD Flags);
//加载 CSP 秘钥
bool CSPImportKey(HCRYPTPROV hProv,BYTE *KeyBlob,DWORD dwKeyBlobLen,HCRYPTKEY* phKey);
//输出 CSP 秘钥
bool CSPExportKey(HCRYPTKEY hKey ,DWORD BlobType,BYTE *KeyBlob,DWORD *BlobLen);
//创建 CSP 秘钥
bool CSPGenKey(HCRYPTPROV hProv,HCRYPTKEY *hKey);
//创建数字签名
bool CSPCreateSign(BYTE *inText,int length,BYTE *pbSignature,DWORD *sgLen,HCRYPTPROV hCryptProv);
//创建效验签名
bool CSPVerifySign(BYTE *inText,int length, BYTE *vrText,int vrlength,HCRYPTPROV hCryptProv,HCRYPTKEY hPubKey);
private:
BYTE KeyBlobPriIWESUN[2048];
private:
BYTE KeyBlobPubIWESUN[2048];
private:
DWORD KeyBlobPubIWESUNLen;
DWORD KeyBlobPriIWESUNLen;
public:
// 文件签名
BOOL CreateFileSign(BYTE* fileData, ULONGLONG flieLength,BYTE *pbSignature,DWORD *sgLen);
CString Bin2HexText(BYTE *data,DWORD Len);
DWORD FileType(BYTE* fileData, ULONGLONG flieLength);
DWORD Find(BYTE *data,DWORD Len,bool flag);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -