前言
为了解决大数运算的问题,世界各国的软件开发人员和研究学者都进行了很多
的研究和实践。近年来,越来越多的开发人员开始重视软件工程的作用,为了减少
重复劳动,提高软件的质量和代码复用,许多优秀的大数运算库随之出现。
NTL简介
NTL 是一个可以用于数论相关计算的库。提供了非常友好的 C++接口,
用于实现有符号的、算术整数的运算,以及向量、矩阵、基于有限域和整数的多项式运算。在密码学中,有限域的应用相当广泛,如 AES、twofish、ECC 等都涉及有限域。
NTL下载地址:点击下载
NTL的安装与编译
将 NTL 压缩软件包 WinNTL-5_3_2.zip 解压到例如 c:\WinNTL-5_3_2,目录里的子目录\doc 有使用说明,子目录\include\NTL 里是类库的全部头文件,子目录\src里是静态库的源代码,可如下用 VC++6.0 编译为静态库供 VC++6.0 使用:
(1)运行 VC++6.0
(2)将 c:\WinNTL-5_3_2\includes 加入 VC++6.0 的 Include 头文件搜索目录
选菜单“Tools | Options | Directories | Include files”将“c:\WinNTL-5_3_2\includes”选入。今后,只要不改变磁盘上的这个目录,用 VC++6.0 编译程序时就会从这个目录里找到 NTL 类库的有关头文件。
(3)建立 Win32 静态库(空)工程
选菜单“File | New | Projects | Win32 Static Library”,在“Location”里写“c:\000”、ProjectName 栏里写“ntllib”(即:要在 c:\000\ntllib 里,只要不改变磁盘上的这个目录,用 VC++6.0 编译程序时就会从这个目录里找到 NTL 类库的有关头文件。
在建立静态库出现的第 1 步时,不要选 Pre-Compiled Header 和 MFC Support。
(4)加入\src 中的源文件,生成静态库 NTLLIB.lib
选菜单“Projects | Add To Project | Files”,将\src 里的全部文件加入。
选菜单“Build | Build All”,编译通过后(有一些警告-warring,不妨害编译成功),打 开 c:\000\ntllib\debug , 取 出 其 中 的 NTLLIB.lib ( 有 大 约 10M ) 放 入 c:\WinNTL-5_3_2\lib 中(新建一个子目录\lib)。
(6)在 VC++6.0 里使用静态库 NTLLIB.lib
选菜单“Tools | Options | Directories | Libarary files”将“c:\WinNTL-5_3_2\lib”选入。今后,只要不改变磁盘上的这个目录,用 VC++6.0 编译程序时就会从这个目录里找到 NTL 的静态库。关闭 VC++6.0。
在 VC++6.0 里使用静态库 NTLLIB.lib 的控制台编程示例
在 C:\WinNTL-5_3_2 建一子目录 mycpp,存放自己的程序,运行 VC++6.0,在c:\000 里建立一个空的控制台工程(选菜单“File | New | Projects | Win32 ConsoleProject”,在“Location”里写“c:\000”、ProjectName 栏里写“myntl”)
今后的控制台编程调试均可在此工程下进行。