📄 datacalc.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 + -