基于Bit位运算的C语言库分析及其应用
1 LibTom工程的简要介绍
LibTom 项目包括开放来源公共领域软件由汤姆St. 丹尼斯用标准C语言写成,他的主页地址是:http://libtomcrypt.org/。
LibTom类库包主要有四个组成部分:LibTomMath、 LibTomCrypt、 LibTomNet, 和 LibTomPoly。2004 年自, LibTomMath 和 LibTomCrypt 是最成熟的组成部分。
LibTomMath 是软件库被优选为有许多特点适当至于使用在密码学应用的arbitrary-precision整数算术。它被利用在 LibTomCrypt 和 LibTomPoly。库包括在包括各种各样的任务譬如基本的加法、减法、增殖、部门以及先进的算法譬如快速的模件减少, 幂模运算、jacobi 标志计算、最了不起的通常除数和最少公倍数的一百个作用。包括并且怎么multiple-precision 整数算术高效率地被实施。
LibTomCrypt 是以及几种消息认证代码。算法实施许多密码协议, 譬如各种各样的分组密码的软件库(AES), 和单向Hash函数, (HMAC, OMAC PMAC), 和几种公开密钥算法(ECC 、RSA 、Diffie-Hellman 和DSA) 。
LibTomPoly 是软件库执行多项式运算基础的软件库。
LibTomPoly是一个公共的开放源代码的软件库,它提供多项式基本的运算。他运用公共的软件库LibTomMath(并不包含软件库LibTomMath),来实现整数的运算并且扩展了整数运算的功能实现多项式的四则运算。
LibTomNet 是TCP/IP 协议被建立在 LibTomCrypt 顶部 和增加认证和编成密码来连接。LibTomNet是一个自由公开源代码的库,它拓展了LibTom-Crypt库的功能,提供了一个相对简单在TCP/IP协议上的使用加密+认证的数据流。这个库的目的就是使用一个简单的协议,它可以被使用到几乎任何地方并且保证了足够的安全性。这个库里面的函数使用了Berkeley style 模型的socket 函数,并作了合适的修改。
TomsFastMath
TomsFastMath意思是非常的块,的确它也非常的轻便易用。它使用标准的C语言写成的来解决大整数的运算的。这个库的功能还有非常快的求大整数的幂运算和其他与纠错码,设计手册和RSA密码系统有关的函数
这个库的绝大部分使用标准的C语言来写的。有一小部分(三个文件)使用标准C语言和汇编程序混合到一起的写的
和LibTomMath软件库相比较这个库快的多。并且相当的灵活,它成熟在以下的几点:
1. 新代码设计的有些凌乱有些。
2. 用的是固定的而不是多精度整数
3. 新代码仅仅适合于快速的求模和求幂运算。
为了解决这些问题所以用了些汇编程序,这些汇编程序用得很小心也很合适使得取得了很好的效果,同时用了大量的宏定义,使得汇编程序和容易的就被嵌入使用
2 LibTomMath的安装使用
(1)下载压缩软件包,编译生成静态库TomMath.lib
下载libtommath-0.33压缩包(2M),解压到例如c:/,这时,在C盘下出现目录/libtommath-0.33,此目录内包含了生成所需静态库的全部源代码,可用vc++6.0编译(见C/C++静态连接库(lib)的设计与应用)成静态库TomMath.lib;
(2)使用静态库TomMath.lib编程可用vc++6.0编译(见C/C++静态连接库(lib)的设计与应用);注意:头文件为:tommath.h tommath_class.h;tommath_superclass.h
在此目录里有一子目录/ demo,其中包含两个实例:
本目录里有下列三个文档,是学习本类库的好材料:
<Implementing Multiple Precision Arithmetic(实现多精度算术)>,有300页,详细写了TomLib算法的实现与应用,是很好的学习资料!