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

📄 edcode2.h

📁 这是一个基于openssl库的对文件进行加密和数字签名的软件
💻 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 + -