📄 edcode2.h
字号:
#ifndef H_EDCODE2
#define H_EDCODE2
#include<iostream.h>
#include<io.h>
#include<iomanip.h>
#include<openssl/rsa.h>
#include<openssl/x509.h>
#include<openssl/pem.h>
#include<openssl/des.h>
#include<openssl/rand.h>
#include<openssl/evp.h>
#include<time.h>
/********************
* 常量 *
********************/
const int BUFLEN=1024;
/***************************
* EDcoder抛出的异常 *
***************************/
/*
class Err_edcoder
{
protected:
int err_id; // 错误号码
public:
Err_edcoder(int id){ err_id = id; }
int getErrid(){ return err_id; }
};
*/
/********************
* EDcoder主体 *
********************/
class EDcoder
{
protected:
FILE *en_sfp,*en_ofp; // 加密:en_sfp为源fp;en_ofp为目标fp
FILE *de_sfp,*de_ofp; // 解密:de_sfp为源fp;de_ofp为目标fp
FILE *user_prikey,*user_pubkey; // 用户密钥
FILE *server_prikey,*server_pubkey; // 服务器密钥
unsigned char MD5_sum[MD5_DIGEST_LENGTH]; // MD5 校验码
unsigned char DES_key[24]; // 3DES 密钥
RSA *pri_rsa,*pub_rsa;
unsigned char MergeKey[40]; // 3DES 密钥和MD5 校验码合成的字符串
unsigned char Sign[128]; // 用用户私钥加了密的MergeKey,得到签名
unsigned char enSign[256]; // 用服务器公钥加了密的签名,得到加密签名
public:
/*************************
* 通用函数 *
*************************/
EDcoder();
~EDcoder();
bool Open_en_sfp(char *filename); // 加密:打开源文件
bool Open_en_ofp(char *filename); // 加密:打开目标文件
bool Open_de_sfp(char *filename); // 解密:打开加了密的文件
bool Open_de_ofp(char *filename); // 解密:打开解密后数据存放的文件
bool Open_user_prikey(char *filename); // 打开用户私钥文件
bool Open_user_pubkey(char *filename); // 打开用户公钥文件
bool Open_server_prikey(char *filename); // 打开服务器私钥文件
bool Open_server_pubkey(char *filename); // 打开服务器公钥文件
void Print_MD5();
void Print_3DES();
int Encrypt(char *srcfile,char *destfile); // 总加密
int Decrypt(char *srcfile,char *destfile); // 总解密
/****************
* MD5函数 *
****************/
void Gen_md5_sum(FILE *fp);
/*************************
* 3DES函数 *
*************************/
void Gen_3des();
int Des_encrypt();
int Des_decrypt(int filelen);
/*************************
* RSA函数 *
*************************/
void Gen_rsa(char *filename1,char *filename2); // 生成用户的私钥(file1)和公钥(file2),写到文件里面
void Init_prikey(FILE *fp);
void Init_pubkey(FILE *fp);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -