栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[密码学实验] 0x00 安装NTL库

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[密码学实验] 0x00 安装NTL库

这里用的是vs2022

编译NTL库

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

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

复制下来这个路径,本次是E:projectstest-projectNTL_CPPx64Debug

使用NTL库

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

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


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


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

测试NTL库是否可使用

用一段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,可以跑了



运行成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号