这里用的是vs2022

编译NTL库

1.先创建静态库项目
2.将NTL包下src下所有文件添加到项目中
工程右键->添加->现有项选择所有文件
3.项目右击,属性
C/C++->常规源码包中include文件目录加到附加包含目录;将SDL检查设置为否
C/C++->预编译头 不使用预编译头
(点击属性名称就可以改预设属性)
4.编译
VS顶部菜单栏生成->生成解决方案

编译完成后会生成lib文件
在项目目录下(这里我的项目名称是NTL_CPP)

复制下来这个路径,本次是E:\projects\test-project\NTL_CPP\x64\Debug

使用NTL库

现在创建一个要使用NTL库的项目
在要使用的项目右击选择属性

将源码包的Include文件夹路径添加到外部包含目录中,同时将SDL检查设置为否


链接器->常规->附加库目录添加.lib文件的路径


再把.lib文件名加到附加依赖项中

测试NTL库是否可使用

用一段RSA代码(来源是这位大佬的文章)测试,出现了error

#include<iostream>
#include<NTL/ZZ.h>
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 numbersp = 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 keyZZ encrypted_message = PowerMod(message, public_key, n);ZZ decrypted_message = PowerMod(encrypted_message, private_key, n);std::cout<<"\np = "<<p<<"\n";std::cout<<"\nq = "<<q<<"\n";std::cout<<"\nn = "<<n<<"\n";std::cout<<"\nphi of n = "<<phi_of_n<<"\n";std::cout<<"\npublic key = "<<public_key<<"\n";std::cout<<"\nprivate key = "<<private_key<<"\n";std::cout<<"\nprivate key * public key (mod phi_of_n)= "<<MulMod(public_key, private_key, phi_of_n)<<"\n";std::cout<<"\nEncrypted Message = "<<encrypted_message<<"\n";std::cout<<"\nDecrypted Message = "<<decrypted_message<<"\n";return 0;
}


4146,一波询问S同学发现是cpp文件里的SDL检查

改完后再运行一下,变成了warning,可以跑了



运行成功

[密码学实验] 0x00 安装NTL库(目前也没打算有别的)相关推荐

  1. 在Ubuntu上安装NTL库以及编译测试

    文章目录 介绍: 步骤: 0. 下载前的准备 1. 下载GMP并解压 2. 下载NTL并解压 3. 对GMP进行编译 4. 对NTL进行编译 编译测试: 关于wsl下载和文件权限: 参考资料: 介绍: ...

  2. Ubuntu18.04安装ntl库

    首先去官网https://www.shoup.net/ntl/下载安装包,下列shell脚本与安装包放到同一目录,赋予此脚本执行权限.另外,我这里默认你的电脑上面已经安装gcc,g++,make. # ...

  3. 在Ubuntu 安装 NTL 库

    关于NTL (A Library for doing Number Theory): NTL is a high-performance, portable C++ library providing ...

  4. 在Ubuntu18.04上编译安装NTL

    这篇文章介绍一下NTL库的编译安装过程,也包含测试程序来帮助检查是否已经安装成功 由于NTL库需要依赖GMP库,所以需要先完成GMP的安装,可以参考我的文章「Ubuntu安装GMP」 首先要在http ...

  5. NTL库在Win上基于MinGW的安装

    NTL库是C++数论库. https://libntl.org/ 一.安装MinGW 下载MinGW安装器MinGW-get-setup 根据需求选择安装的包(一定要装msys和gmp) 二.安装NT ...

  6. 密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码)

    密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码) 3.    AES实验 3)    (思考题)利用Sage构建AES的S盒和逆S盒 ...

  7. crypto安装_CryptoPP库在Linux系统下的安装与测试

    CryptoPP库在Linux系统下的安装方法比较简单,具体如下: (1)解压源代码压缩包 unzip –a cryptopp700.zip 此处安装的CryptoPP库版本为7.0.0. (2)执行 ...

  8. DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略

    DL框架之Keras:深度学习框架Keras框架的简介.安装(Python库).相关概念.Keras模型使用.使用方法之详细攻略 目录 Keras的简介 1.Keras的特点 2.Keras四大特性 ...

  9. python安装扩展常用的工具是_Python 安装扩展库常用的是 _______ 工具_学小易找答案...

    [单选题]若用一个字节存储一个正整数,则这个正整数的最小值和最大值分别是 ________ . (1.0分) [单选题]有甲.乙.丙.丁四位同学,用米尺测量一根铜棒的长度,各人所得的结果表达如下,正确 ...

最新文章

  1. jittor和pytorch生成网络对比之wgan
  2. 计算机网络(十)-数据链路层-差错控制
  3. 循环数组最大字段和(51Nod-1050)
  4. linux之fail2ban之预防暴力破解
  5. 把一个数组的值赋给另一个数组(VB.NET)
  6. 通达信波段王指标公式主图_通达信波段王+精准买卖提示主图指标公式
  7. 四旋翼无人机飞行原理
  8. K3默认序时簿是不体现即时库存的,如果需要在序时簿将物料的即时库存数据带入,可以按照下方的步骤实现:
  9. 如何将硬盘数据迁移包括系统一起迁移到另一个硬盘?
  10. 屏蔽计算机电缆套什么定额,DJYPVP4*2*1.0计算机屏蔽电缆-DJYVP分屏蔽计算机电缆...
  11. 实战|教你爬取全国火锅店数量,并利用地图可视化展示
  12. 在线学习算法FTRL基本原理
  13. java数据类型有哪些(给博主倒一杯卡布奇诺)
  14. runtime.getruntime.availableprocessors
  15. java版+支付宝支付和微信支付(一)(含源码)
  16. 移动操作系统的优劣及下一代移动系统展望
  17. Tikz作图教程:说说图形颜色填充那些事儿
  18. 艾瑞发布《2021 年全球互联网通信云行业研究报告》,融云持续领跑市场
  19. ORACLE 数据库管理员的职责
  20. Excel - 复制 / 粘贴单元格分隔符

热门文章

  1. 【题库】上海市学校心理咨询师-发展心理学-考点解析 2.4 精神分析论
  2. 网络爬虫ip防止被封常见的三种解决方法
  3. C#用 AutoCAD2011,2020 CAD转PDF
  4. linux系统下的归档与压缩
  5. 8.6分享HWL变量命名规范
  6. 下列常用的html标记有,html的题库(含答案)
  7. 物联网终端开发理论基础
  8. 新媒体运营教程:活动的复盘通用的复盘逻辑。
  9. react 中 state 的基本使用
  10. JCenter已经提桶跑路,是时候学会上传到Maven Central了