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

📄 datacalc.txt

📁 md5和sha-2的源码
💻 TXT
字号:
****************************************************************************************
		DATA CALCULATE MODULE PACKAGE
DESCRIPTION: This Module contian the calculator for compute data hash code or others.
All Modules are thread-safe. 

Relative Modules: Base.h / Base.C
*****************************************************************************************


[ Crc32Calc ]

   使用WinRAR相同的POLY值("abc"字串的Crc32值为 0x352441c2 )。每次调用的最大数据块为 2G。

   --------------------------------结构对象----------------------------------------------
   typedef struct _Crc32Calc{
	SZ_INT  Value;
   }Crc32Calc;
   
   # Value: 32 位的CRC32值。

   --------------------------------API 列表----------------------------------------------
 
   # Crc32Calc_init( Crc32Calc* ObjPtr )
   -- 描述:计算模块的初始化

   # Crc32Calc_uninit( Crc32Calc* ObjPtr )
   -- 描述:计算模块的清除工作
 
   # Crc32Calc_reset( Crc32Calc* ObjPtr )
   -- ObjPtr: 对象指针
   -- 描述: 重置对象计算状态, 为下次计算作准备

   # Crc32Calc_calculate( Crc32Calc* ObjPtr, char* CharPtr, int DataLen )
   -- ObjPtr: 对象指针
   -- CharPtr: 串指针
   -- DataLen: 数据大小, 最大不能超过2GB. 超过2GB的将会去掉负号而转为大正数.如
   0x80000000, 与 0x7fffffff 相与得 0
   -- 描述:该API 将对数据流进行计算

   * 特性:支持增量计算。增量计算即第一次计算 "abc" 得到CRC32值后,不释放这个对象,
   之后,在不reset()的情况下可以继续计算"def",这时的CRC32值即 "abcdef" 的CRC32值。
   数据总量没有最大限制,但每次调用calculate时,数据不能超过机器字长所能表示的正数,
   32位机最大不能超过2GB.


[ Md5Calc ]

   MD5 32位散列值计算。每次调用的最大数据块为 2G。

   --------------------------------结构对象----------------------------------------------
    typedef struct _Md5Calc{ 
	SZ_CHAR  Value[ 16 ]; 
	SZ_CHAR  Resvd[ 160 ];  
    }Md5Calc;
   
   # Value[ 16 ]: 16 字节的MD5值
   # Resvd[ 160 ]: 160 字节的用作保留为API内部使用的部分,不要修改它或者访问它。

   --------------------------------API 列表----------------------------------------------
   API 列表:
   # Md5Calc_init( Md5Calc* ObjPtr )
   -- 描述:计算模块的初始化

   # Md5Calc_uninit( Md5Calc* ObjPtr )
   -- 描述:计算模块的清除工作

   # Md5Calc_reset( Md5Calc* ObjPtr )
   -- ObjPtr: 对象指针
   -- 描述: 清空对象中的值, 为下次计算作准备

   # Md5Calc_calculate( Md5Calc* ObjPtr, char* CharPtr, int DataLen )
   -- ObjPtr: 对象指针
   -- CharPtr: 串指针
   -- DataLen: 数据大小, 最大不能超过2GB. 超过2GB的将会去掉负号而转为大正数.如
   0x80000000, 与 0x7fffffff 相与得 0
   -- 描述:该API 将对数据流进行计算

   * 特性:支持增量计算。增量计算即第一次计算 "abc" 得到Md5值后,不释放这个对象,
   之后,在不reset()的情况下可以继续计算"def",这时的Md5值即 "abcdef" 的Md5值。
   数据总量应该小于 2,305,843,009,213,693,951 ( 0x1FFFFFFFFFFFFFFF ),
   对于32位机每次调用calculate时,数据不能超过 2GB。

   * 可能的返回值:
   RET_OK  -- 成功完成
   RET_OVER_LIMIT -- 数据总量超标(此次输入的数据与上一次输入的数据量加起来超过
   极限值(0x1fff ffff ffff ffff )


[ Sha1Calc 与 Sha256Calc ]
   安全散列第1版本的160位与第2版本的256位计算模块。每次调用的最大数据块为 2G。
   --------------------------------结构对象----------------------------------------------
   typedef struct _Sha1Calc{ 
	SZ_CHAR  Value[ 20 ]; 
	SZ_CHAR  Resvd[ 160 ];  
   }Sha1Calc;
   
   # Value[ 20 ]: 20 字节的Sha1 散列值(已按照Sha 规范输出)
   # Resvd[ 160 ]: 内部保留使用

   typedef struct _Sha256Calc{ 
	SZ_CHAR  Value[ 32 ]; 
	SZ_CHAR  Resvd[ 364 ];
   }Sha256Calc;  

   # Value[ 32 ]: 32字节的Sha2 值
   # Resvd[ 364 ]: 内部保留使用

   
   --------------------------------API 列表----------------------------------------------
 
   # Sha1Calc_init( Sha1Calc* ObjPtr ) / Sha2Calc_init( Sha256Calc* ObjPtr )
   -- 描述:计算模块的初始化

   # Sha1Calc_uninit( Sha1Calc* ObjPtr ) / Sha2Calc_uninit( Sha256Calc* ObjPtr )
   -- 描述:计算模块的清除工作
  
   # Sha1Calc_reset( Sha1Calc* ObjPtr ) / Sha256Calc_reset( Sha256Calc* ObjPtr )
   -- ObjPtr: 对象指针
   -- 描述: 清空对象中的值, 为下次计算作准备

   Sha1Calc_calculate( Sha1Calc* ObjPtr, char* CharPtr, int DataLen )
   Sha256Calc_calculate( Sha256Calc* ObjPtr )
   -- ObjPtr: 对象指针
   -- CharPtr: 串指针
   -- DataLen: 数据大小, 最大不能超过2GB. 超过2GB的将会去掉负号而转为大正数.如
0x80000000, 与 0x7fffffff 相与得 0

   * 特性:支持增量计算。增量计算即第一次计算 "abc" 得到Sha值后,不释放这个对象,
   之后,在不reset()的情况下可以继续计算"def",这时的Sha值即 "abcdef" 的Sha值。
   数据总量应该小于 2,305,843,009,213,693,951 ( 0x1FFFFFFFFFFFFFFF ),
   对于32位机每次调用calculate时,数据不能超过 2GB。

   * 可能的返回值:
   RET_OK  -- 成功完成
   RET_OVER_LIMIT -- 数据总量超标(此次输入的数据与上一次输入的数据量加起来超过
   极限值(0x1fff ffff ffff ffff )

⌨️ 快捷键说明

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