|
 |
 |
|
防盗版接口 | 与加密接口 | 与远程控制接口 | 与短信息接口 |
与加密接口
|
功能:提供多种加密算法,用户可以调用这些加密算法进行自己数据保护
头文件为multicode.h
multicode.lib静态函数库文件
multicode.dll动态函数库文件
multicode.txt文件长度及MD5数据保存文件
函数调用演示代码工程包见MultiCoderDemo.zip
/////////////////////////////////////////////////////////////
//文件名:MultiCoder.h
//功能 :高效、可靠加/解密算法库函数定义、说明文件
// 提供的算法有:BASE64算法、增强MD5算法、DES算法、3DES算法、RSA算法。
//公司 :北京慧峰诚信科技有限公司
//网址 :http://www.wisepeak.com
// http://www.netblade.cn
//日期 :2005-06-13
/////////////////////////////////////////////////////////////
#ifndef __MULTICODER_H__
#define __MULTICODER_H__
#define EN0 0 /* 加密标记 */
#define DE1 1 /* 解密标记 */
/* ----------------BASE64算法
* BASE64是一种编码方法,它只用ASCII码中的65个字符(包括[A-Za-z0-9+/]这64个字符和用作填充用的'='字符),
* 将3字节(8bits * 3 = 24bits)的字节流变换为4字节(6bits * 4 = 24bits)的可显示字符串。
* RFC2045文件对其做出了详细的规定。
*/
/////////////////////////////////////////////////////////////
//函数名:DoBASE64
//功能 :对输入字节流进行BASE64编/解码
//参数 :idata 字符指针型,输入,需要进行BASE64编码的数据缓冲区
// idatalen 整型,输入,idata数据缓冲区长度
// :odata 字符指针型,输出,用于保存编码后数据的缓冲区
// odatalen 整型,输入,odata数据缓冲区长度
// type,整型,输入,=EN0表示加密,=DE1表示解密
//返回值:编码后数据长度
//注意 :加密参数要求:odatalen >= (idatalen * 4 / 3)。
// :解密参数要求:odatalen >= (idatalen * 3 / 4);idatalen必须为4的整数倍。
/////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) int DoBASE64(char *idata, int idatalen, char *odata, int odatalen,int type);
/* ----------------增强MD5算法。
* 基本MD5算法对输入的明文进行摘要提取,得到一组与明文具有相关特性的、固定长度的摘要数据(字节流序列)。
* 算法具有单向性,即可以从明文获取到摘要,但不能通过摘要获取到明文。
* 增强MD5算法是在基本MD5算法基础上加上密码控制,即得到的摘要是受密码控制的。
*/
/////////////////////////////////////////////////////////////
//函数名:MD5_Ex
//功能 :增强MD5算法,如果key为空,则为基本MD5算法
//参数 :data 字符指针型,输入,需要进行MD5处理的数据缓冲区
// datalen 整型,输入,data数据缓冲区长度
// key 字符指针型,输入,密码数据缓冲区
// keylen 整型,输入,密码数据缓冲区长度
// digest 字符指针型,输出,16字节长摘要数据缓冲区
//返回值:无
/////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) void MD5_Ex(char *data, int datalen, char *key, int keylen, char *digest);
/* ----------------DES、3DES算法
* DES:数字加密算法,使用8字节密钥进行数据加/解密;
* 3DES:数字加密算法,使用16字节密钥进行数据加/解密,要进行3次DES加/解密;
*/
/////////////////////////////////////////////////////////////
//函数名: DoDES
//功能 : 对数据进行DES加密/解密,明文数据与加密后密文数据长度相同
//参数 : data 字符指针型,输入/输出,存放明文数据和编码后密文数据的缓冲区。
// 有效长度应为8字节的整数倍,不足8字节,要填充至8字节整数倍长度。
// datalen 整型,输入,数据缓冲区长度,为8的整数倍。
// key 字符指针型,输入,密钥数据缓冲区,固定8字节,不足8字节要填充(0或者空格)。
// type 整型,输入加密/解密类型,=EN0表示加密,=DE1表示解密。
//返回值: 无
/////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) void DoDES(char *data,int datalen,char *key,int type);
/////////////////////////////////////////////////////////////
//函数名: Do3DES
//功能 : 对数据进行3DES加密/解密,明文数据与加密后密文数据长度相同
//参数 : data 字符指针型,输入/输出,存放明文数据和编码后密文数据的缓冲区。
// 有效长度应为8字节的整数倍,不足8字节,要填充至8字节整数倍长度。
// datalen 整型,输入,数据缓冲区长度,为8的整数倍。
// key 字符指针型,输入,密钥数据缓冲区,长度固定16字节,不足16字节要填充(0或者空格)。
// type 整型,输入加密/解密类型,=EN0表示加密,=DE1表示解密。
//返回值: 无
/////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) void Do3DES(char *data,int datalen,char *key,int type);
/* ----------------RSA算法
* 非对称加密算法
*/
//非对称加密算法中允许十进制数值的最大位数
#define DATALENGTH 64
//为了对字节流进行加密,这里将每BYTEPERBLOCK个字节作为一个数值进行处理
#define BYTEPERBLOCK 4
//对字节流进行加密后,各BYTEPERBLOCK个字节加密后得到密文之间的分割字符(解密时以此划分出各块密文)
#define SPLITCHAR ' '
/////////////////////////////////////////////////////////////
//函数名:DoRSA
//功能 :对数据进行RSA加密/解密
// 加密--以BYTEPERBLOCK字节为单位进行,如果数据长度不为BYTEPERBLOCK整数倍则后面填充'\0'
// 需要进行加密的数据可以是任何形式表示的数据
// 解密--解密数据必须是数字字符串,不同块之间用SPLITCHAR字符隔开
// 注意:每块数字字符串长度不能超过DATALENGTH
//参数 :indatabuff 字符指针型,输入,需要加密/解密的数据缓冲区
// indatalen 整型,输入,需要加密/解密的数据缓冲区长度
// outdatabuff 字符指针型,输出,保存加密/解密完毕后的密文/明文数据缓冲区
// outdatalen 整型,输出,返回加密/解密后的密文/明文数据缓冲区长度
// key 字符指针型,输入,RSA密钥系统中密钥(数字字符串,长度<DATALENGTH)
// Nvalue 字符指针型,输入,RSA密钥系统中N值(数字字符串,长度<DATALENGTH)
// type 整型,输入,=EN0表时加密,=DE1表示解密
//返回值 :=0表示成功返回,=1表时密钥非法,=2表时N值错误,=3表示数值长度有误
/////////////////////////////////////////////////////////////
extern "C" __declspec(dllexport) int DoRSA(char *indatabuff,int indatalen,char *outdatabuff,int &outdatalen,char *key,char *Nvalue,int type);
#endif |
防盗版接口 | 与加密接口 | 与远程控制接口 | 与短信息接口 |
|
|
|