Python 程序和 C 程序整合实例
以下我们举例用 Python 来实现一个小工具,用来实现 hash 算法,查看文件的校验和(MD5,CRC,SHA1 等等)。通过查看文件的校验和,可以知道文件在传输过程中是否被破坏或篡改。
Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
由于相对 C 语言来说,Python 的运行效率较低,因此我们的 Python 小工具利用一个已有的 C 语言的动态链接库 (hashtcalc.dll) 来实现我们的程序。本例中,我们运用 wxPython 编写简单的 GUI 界面,通过 python 调用 hashtcalc.dll 的接口计算文件的校验和,然后输出在界面上。
架构图
图 1. 工具的架构图
hashcalc.dll 接口描述
函数名:calc_CRC32
函数:char* calc_CRC32(char *filename);
参数:文件名
返回值:字符串
说明:该函数对输入的文件内容进行计算,并且返回它的 CRC32
函数名:calc_MD5
函数:char* calc_MD5(char *filename);
参数:文件名
返回值:字符串
说明:该函数对输入的文件内容进行计算,并且返回它的 MD5
函数名:calc_SHA1
函数:char* calc_SHA1 (char *filename);
参数:文件名
返回值:字符串
说明:该函数对输入的文件内容进行计算,并且返回它的 SHA1