IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> ntl-安装及使用 -> 正文阅读

[C++知识库]ntl-安装及使用

NTL安装与使用

NTL是一个数论库,可以方便地实现各种密码,官网

相关资源

已上传到资源

image-20220429163520215

环境

  • ubuntu
  • clion

准备

  1. 下载ntl-11.5.1.tar.gz,解压

image-20220429153528991

  1. 下载gmp6.2.0

image-20220429153810339

  1. 下载pbc-0.5.14

安装

先安装pbc,再安装gmp,最后安装ntl。

  1. 安装pbc-0.5.14

    tar -xvf pbc-0.5.14.tar.gz 
    sudo cp pbc-0.5.14 /usr/local/src/ -r 
    cd /usr/local/src/pbc-0.5.14/
    sudo ./configure 
    sudo make
    sudo make install
    

    image-20220429155352451

  2. 安装gmp-6.2.0

    tar -xvf gmp-6.2.0.tar.bz2 
    sudo cp gmp-6.2.0 /usr/local/src/ -r
    cd /usr/local/src/gmp-6.2.0/
    sudo ./configure 
    sudo make
    sudo make install
    

    image-20220429160441041

    1. 安装ntl-11.5.1

      unzip ntl-11.5.1.zip 
      sudo cp ntl-11.5.1 /usr/local/src/ -r
      cd /usr/local/src/ntl-11.5.1/src
      sudo ./configure 
      sudo make
      sudo make install
      

      image-20220429161519147

测试

github

下载基于NTL的密码实践代码,

测试RSA

#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 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 = "<<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; 
}

CLion配置,添加远程执行环境

  1. 添加toolchain

image-202204291624411782. cmake配置

image-20220429162553666

image-20220429162633892

  1. 运行

    image-20220429162727219

  2. 运行出错

    image-20220429162757305

  3. 添加库位置,修改CMakeLists.txt

    cmake_minimum_required(VERSION 3.0)
    project(ecc)
    
    # 声明位置
    LINK_DIRECTORIES(/usr/local/lib)
    
    link_libraries(/usr/local/lib/libntl.a)
    #被链接的库相对路径
    link_directories(/usr/local/lib /lib)
    #被链接库的头文件相对路径
    include_directories(/usr/local/include)
    add_executable(ecc main.cpp)
    target_link_libraries(ecc -lm -lgmp -lntl -lpthread)
    
  4. 再次运行

image-20220429163214418

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-02 13:24:33  更:2022-05-02 13:24:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:03:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码