#ifndef id_h #define id_h #include #include /* *SID的初始值管理及操作的结构 */ struct sid_raw{ unsigned int type; unsigned int *value;//4 unsigned int *value_deeper;//8 unsigned int *value_deepest;//32 }; /* *SID的管理及操作的结构 */ typedef struct s_id{ struct sid_raw *sr;//指向SID初始值 unsigned int deep;//SID初始值的复杂度 MD5_CTX *md5;//指向MD5结构 unsigned char *decrypt_hex;//指向MD5的Hex信息 char *decrypt_str;//指向MD5的Hex信息转化成的字符串 }SID; /************************************************ 初始化: 初始化有关函数 ************************************************/ /* *获得一个新的SID *参数: deep_level指示原始ID的复杂度,type指示SID所绑定的数据结构的数据类型 *返回: 处理成功则返回指向相关结构体所在内存空间的指针,不成功则返回NULL. */ extern SID *getS_id(unsigned int type, unsigned int deep_level); /* *通过SID原始数据转换而成的字符串形式的MD5获得一个新的SID *返回: 处理成功则返回指向相关结构体所在内存空间的指针,不成功则返回NULL. */ extern SID *setS_idWithString(char *); /* *获得一个新的ID */ extern unsigned long long getId(void); /************************************************ 比较: ID的比较函数 ************************************************/ /* *比较两个SID *返回: 返回strcmp风格的返回值 */ extern int fitS_id(SID * const fs_id, SID * const ss_id);\ /* *比较两个SID *返回: 相同返回1,不相同返回0 */ extern int simFitS_id(SID * fs_id, SID * ss_id); /************************************************ 比较: ID的转换函数 ************************************************/ /* *将SID中的Hex形式的MD5数据转化成字符串形式的MD5 */ extern void setSidToASCIIString(SID * const s_id); char *s_idToASCIIString(SID * const s_id); /************************************************ 复制: 复制ID的函数 ************************************************/ /* *复制一个既有的SID,得到一个相同的崭新的SID */ extern SID *copyS_id(SID *f_sid); /************************************************ 释放: 释放ID的函数 ************************************************/ /* *释放SID原始数据所占的内存空间 */ extern int freeSidRaw(SID *s_id); /* *释放SID所有已占用的内存空间 */ extern int freeS_id(SID *s_id); #endif /* id_h */