chpr_b64.h 2.7 KB
/*
 * chpr_b64.h
 *base64混淆算法
 *注意! 该算法只适合混淆敏感性不高的数据
 *注意! 对高敏感性数据应使用AES RSA等更强力的加密算法
 *注意! 参数里的指针地址必须是4的整数倍
 *  Created on: 2013-3-15
 *      Author: mengkefeng
 *      函数名编号:GC(01-99)
 */

#ifndef CHPR_B64_H_
#define CHPR_B64_H_


#ifdef __cplusplus
extern "C"
{
#endif

//#ifndef IPT_CONFIG_NO_CODE_OBFU
#define B64_Buffer_Need GC01
#define B64_Encode GC02
#define B64_Decode GC03
//#endif

////一段封存的代码

#ifndef  IPT_BASIC_TYPE_DEF
#define  IPT_BASIC_TYPE_DEF
typedef unsigned int PLUINT32;
typedef unsigned short PLUINT16;
typedef unsigned char PLBYTE;
typedef unsigned char PLUINT8;
typedef signed int PLINT32;
typedef signed short PLINT16;
typedef signed char PLINT8;
typedef long long PLINT64;
typedef const char PLFNAME;
#define PLTRUE 1
#define PLFALSE 0
#define PLNULL 0
#endif
//#define B64_Encode B6401
//#define B64_Decode B6402
//#define B64_Buffer_Need B6403
////注意! 该算法只适合混淆敏感性不高的数据//////////////////////
////注意! 对高敏感性数据应使用AES RSA等更强力的加密算法/////
////注意! 参数里的指针地址必须是4的整数倍

/**根据原文数据块计算 "buffer" 需要分配的空间大小:内部公式为:  ((((input_size+2)/3)*4) + 2)
 * @param input_size — 原文数据块的大小 
 * @return 输出的(字符串长度+1); 若返回值<0, 说明输入参数有误,混淆失败
 */
PLINT32 B64_Buffer_Need(PLUINT32 input_size);

/**将输入的数据块转换成 专有base64格式
 * @param buffer — 输入的 原文数据块 和输出的 base64格式字符串,指针地址必须是4的整数倍 ,应分配足够的内存空间,大小为 : b64_Buffer_Need(PLUINT32 input_size)
 * @param input_size — 输入的 原文数据块的大小 
 * @param B64_seeds — 混淆种子,范围是(0 ~ 4294967295)的一个32位整数,编码和解码时必须提供一致的数字(可以理解为一个密钥)
 * @return 输出的(字符串长度+1); 若返回值<0, 说明输入参数有误,混淆失败
 */
PLINT32 B64_Encode(PLBYTE* buffer, PLUINT32 input_size,PLUINT32 B64_seeds);

/**将输入的 专有base64格式字符串 转换成 原文数据块
 * @param buffer — 输入的 专有base64格式字符串 和 输出的 原文数据块,指针地址必须是4的整数倍 
 * @param B64_seeds — 混淆种子,范围是(0 ~ 4294967295)的一个32位整数,编码和解码时必须提供一致的数字(可以理解为一个密钥)
 * @return 输出的(原文数据块大小); 若返回值<0, 说明输入参数有误,混淆失败
 */
PLINT32 B64_Decode(PLBYTE* buffer,PLUINT32 B64_seeds);

#ifdef __cplusplus
}
#endif


#endif /* CHPR_B64_H_ */