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

📄 multicoder.h

📁 用VC实现的RSA加密解密算法
💻 H
字号:
////////////////////////////////////////////////////////////////////////////////////
//文件名:MultiCoder.h
//功能  :提供多种编码算法支持的库函数头文件说明
//        编码算法有:增强MD5算法、BASE64算法、DES算法、3DES、RSA算法
//日期  :2004-10-24
////////////////////////////////////////////////////////////////////////////////////

#define EN0     0       /* MODE == encrypt */
#define DE1     1       /* MODE == decrypt */

////////////////////////////////////////////////////////////////////////
//函数名: GetDLLVersion
//功能  : 得到本函数库序版本号
//参数  : 无
//返回值: 整型,返回版本号,后两位是子版本号,前面为主版本号
////////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) int GetDLLVersion();

/* ----------------BASE64算法 
 * 对输入的字节流进行转换映射,编码完后的字节流将全部可以显示(其中字符属于设定的64字符集之一)
 */
////////////////////////////////////////////////////////////////////////////////////
//函数名:DoBASE64
//功能  :对输入字节流进行BASE64编码,得到可显示字符串
//参数  :idata 输入的需要进行BASE64编码的数据(指针)
//        idatalen 输入数据idata长度
//      :odata 存放经过BASE64编码的输出数据(指针)
//        odatalen 输出数据odata长度
//        type,加密/解密,整型,=EN0表示加密,DE1表示解密。
//返回值:编码后数据长度
//注意  :加密参数要求:odatalen >= (idatalen * 4 / 3)
//      :解密参数要求:odatalen >= (idatalen * 3 / 4);idatalen必须为4的整数倍
////////////////////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) int DoBASE64(const unsigned char *idata, int idatalen, unsigned char *odata, int odatalen,int type);

/* ----------------增强MD5算法。
 * 对输入的明文进行摘要提取,最终得到受密码控制的、具有与明文相关特性的、固定长度字符串 
 */
////////////////////////////////////////////////////////////////////////////////////
//函数名:MD5_Ex
//功能  :增强MD5算法,可以通过设置密码,控制MD5算法的输出结果
//参数  :data 输入的需要进行MD5处理的数据(指针)
//        datalen 数据data长度
//        key 密码数据(指针)
//        keylen 密码数据长度
//        digest 返回的16字节长摘要数据
//返回值:无
////////////////////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) void MD5_Ex(unsigned char *data, int datalen, unsigned char *key, int keylen, unsigned char digest[16]);

/* ----------------DES、3DES算法 
 * 数字加密算法
 */
////////////////////////////////////////////////////////////////////////
//函数名: DoDes
//功能  : 用DES算对数据进行加密/解密
//参数  : data,数据,字符串,有效长度应为8字节的整数倍,不足8字节,用户自己处理填充。
//         datalen,数据长度,整型,应为8的整数倍。
//         key,密钥,字符串,固定8字节。
//         type,加密/解密,整型,=EN0表示加密,DE1表示解密。
//返回值: 无
////////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) void DoDES(char data[],int datalen,char key[8],int type);

////////////////////////////////////////////////////////////////////////
//函数名: Do3Des
//功能  : 用3DES算对数据进行加密/解密
//参数  : data,数据,字符串,有效长度应为8字节的整数倍,不足8字节,用户自己处理填充。
//         datalen,数据长度,整型,应为8的整数倍。
//         key,密钥,字符串,固定16字节。
//         type,加密/解密,整型,=EN0表示加密,DE1表示解密。
//返回值: 无
////////////////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) void Do3DES(char data[],int datalen,char key[16],int type);

/* ----------------RSA算法 
 * 非对称加密算法
 */
#define DATALENGTH 64
#define BYTEPERBLOCK 4
#define SPLITCHAR ' '
///////////////////////////////////////////////////////////////////////////////////
//函数名:DoRSAData
//功能  :对数据进行RSA加密/解密
//  加密--以BYTEPERBLOCK字节为单位进行,如果数据长度不为BYTEPERBLOCK整数倍则后面填充'\0'
//        需要进行加密的数据可以是任何形式表示的数据
//  解密--解密数据必须是数字字符串,不同块之间用SPLITCHAR字符隔开
//参数  :indatabuff 需要加密/解密的数据
//        indatalen 需要加密/解密的数据长度
//        outdatabuff 加密/解密完毕后的密文/明文数据
//        outdatalen 返回加密/解密后的密文/明文数据长度
//        key 密钥
//        Nvalue N值
//        encodeflag 加密EN0/DE1解密标记
//返回值 :0表示成功返回,1密钥非法,2 n值错误,3数据太长
////////////////////////////////////////////////////////////////////////////////////
//注意:  需解密数字字符串长度不能超过DATALENGTH
extern "C" __declspec(dllexport) int DoRSAData(char indatabuff[],int indatalen,char outdatabuff[],int &outdatalen,char key[],char Nvalue[],int encodeflag);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -