这里用的是vs2022
编译NTL库1.先创建静态库项目
2.将NTL包下src下所有文件添加到项目中
工程右键->添加->现有项选择所有文件
3.项目右击,属性
C/C++->常规源码包中include文件目录加到附加包含目录;将SDL检查设置为否
C/C++->预编译头 不使用预编译头
(点击属性名称就可以改预设属性)
4.编译
VS顶部菜单栏生成->生成解决方案
编译完成后会生成lib文件
在项目目录下(这里我的项目名称是NTL_CPP)
复制下来这个路径,本次是E:projectstest-projectNTL_CPPx64Debug
现在创建一个要使用NTL库的项目
在要使用的项目右击选择属性
将源码包的Include文件夹路径添加到外部包含目录中,同时将SDL检查设置为否
链接器->常规->附加库目录添加.lib文件的路径
再把.lib文件名加到附加依赖项中
用一段RSA代码(来源是这位大佬的文章)测试,出现了error
#include#include using namespace NTL; int main(){ ZZ p, q, n, phi_of_n, public_key, private_key, message; int no_of_bits; std::cout<<"Enter no of bits : "; std::cin>>no_of_bits; // generating p and q prime numbers p = GenPrime_ZZ(no_of_bits, 80); q = GenPrime_ZZ(no_of_bits, 80); n = p * q; phi_of_n = (p-1)*(q-1); ZZ i = (ZZ)1; long bits_of_n = 0; for( ; i <= n; i *= 10) { bits_of_n++; } public_key = GenPrime_ZZ(bits_of_n/2, 80); private_key = InvMod(public_key, phi_of_n); std::cout<<"nEnter Message to decrypt : "; std::cin>>message; // Encryption of message using public key ZZ encrypted_message = PowerMod(message, public_key, n); ZZ decrypted_message = PowerMod(encrypted_message, private_key, n); std::cout<<"np = "<
4146,一波询问S同学发现是cpp文件里的SDL检查
改完后再运行一下,变成了warning,可以跑了
运行成功


![[密码学实验] 0x00 安装NTL库 [密码学实验] 0x00 安装NTL库](http://www.mshxw.com/aiimages/31/1030841.png)
