NTL密码算法开源库(数论库)代码分析项目--综述
2021SC@SDUSC
NTL密码算法开源库(数论库)代码分析项目--综述
- 项目综述
- NTL开源代码库的安装和使用
- NTL代码开源库主要解决的问题
- 项目分工以及核心代码的分配
项目综述
NTL算法库是开放源码的自由软件,具有专业处理任意精度大整数、实数的计算数论与计算代数的高性能可移植c++库,提供了任意大整数、任意精度实数以及基于整环和有限域上向量、矩阵、多项式的数据结构和算术运算,同时提供了大量的库函数实现,因此它是信息安全理论实现、符号计算与计算机自动推理平台开发的高效函数库。近年来,众多国内外研究人员将其应用于信息安全研究领域。算法库的使用非常方便与灵活,同时具备在Windows与Linux平台进行扩展开发与直接调用算法库实现函数,同时提供了优秀的二次开发接口,并具备面向过程与面向对象双重开发方法。基于上述优点,笔者欲对算法库进行深入分析,介绍NTL算法库的算法内部实现原理,深度剖析NTL算法库内在的工作原理和实现过程。
NTL开源代码库的安装和使用
第一步:下载NTL代码开源库(https://www.shoup.net/ntl/download.html)
第二步:选择合适的NTL开源库进行下载(这里笔者下载的是NTL 11.5.1 for Windows)
第三步:将压缩包下载到电脑中的非系统盘中并进行解压缩
第四步:在Visual studio 2017中创建NTL静态库
第五步:创建测试程序测试NTL静态库的运行状态是否正常
NTL代码开源库主要解决的问题
NTL密码开源库主要解决的问题有:任意大整数、任意精度实数以及基于整环和有限域上向量、矩阵、多项式的数据结构和算术运算,同时提供了大量的库函数实现。针对这些功能,笔者在下载了NTL库之后对其内部的src文件进行了翻看,NTL算法定义了很多的类,下面对NTL中的相对重要的类进行阐述说明:
–大整数(zz):任意长度大整数表示、最大公因数、Jacobi符号和素性检验;
–模P大整数(ZZ_P):ZZ—P上数据表示、基本运算、关系运算与流控制等;
–模单精度整数(zz_P):模单精度P整数表示、内存分配、基本运算与重载等;
–模2整数(GF2):GF2上数据表示、基本运算、运算重载与关系运算等;
–ZZ上多项式(zzx):单变元多项式最大公因式、特征多项式、范数与迹运算等;
–ZZ_p上扩张(ZZ_pE):ZZ_pE上数据表示、基本运算、关系运算、范数与迹运算;
–ZZ_p上多项式(ZZ_pX):多项式向量表示、基本运算、模运算与最大公因式等;
–ZZ_pE上多项式(ZZ_pEX):模单变元多项式、极小多项式、特征多项式和插值运算等;
–zz_p上多项式(zz_pX):多项式向量表示、极小多项式、特征多项式与插值运算等;
–zz_p上扩张(zz_pE):ZZ_pE上基本运算、幂运算、范数与迹运算等;
–GF2上多项式(GF2X):GF2上单变元多项式的最大公因式、极小多项式、因式分解;
–GF2上矩阵(mat_GF2):矩阵算术运算、矩阵逆、解非退化线性方程与高斯消元等;
–GF2上环/域扩张(GF2E):GF2上扩张单变元多项式、实现GF2[x]/§上的运算;
–GF2E上多项式(GF2EX):GF2上单变元多项式、模多项式运算、模合成、极小多项式特征多项式和插值运算等。
项目分工以及核心代码的分配
本次NTL密码算法代码分析项目组由两位成员组成,分别是笔者(@元解~殇怀)和@回首,阑珊。我们对代码分析的工作进行了详细的分配,每个人都参与到了核心代码的分析中。针对1.3中说明的NTL中的相对重要的类,我们欲对其进行详细分析,预计每周更新一篇博客。@回首,阑珊主要对代码中的数论方面的数学知识进行深入研究,笔者则侧重于代码的实现逻辑以及数论知识是如何在代码中进行应用和编写的。我们会进行日常交流,共同研究代码,讨论数学,完成报告。
PS:参考文献《基于NTL算法库的多元多项式因式分解高效实现》
NTL密码算法开源库(数论库)代码分析项目--综述相关推荐
- NTL密码算法开源库--综述
2021SC@SDUSC NTL密码算法开源库--综述 项目综述 NTL算法库是开放源码的自由软件,具有专业处理任意精度大整数.实数的计算数论与计算代数的高性能可移植c++库,提供了任意大整数.任意精 ...
- NTL密码算法开源库-大整数ZZ类(一)
2021SC@SDUSC NTL密码算法开源库-大整数ZZ类(一) 本章综述 代码分析 贝祖公式 本章综述 大整数ZZ类主要实现了任意长度大整数表示.最大公因数.Jacobi符号和素性检验.笔者将通过 ...
- NTL密码算法开源库-大整数ZZ类(三)
2021SC@SDUSC NTL密码算法开源库-大整数ZZ类(三) 中国剩余定理 一次同余式 乘法逆元 简化剩余的等价描述 二次同余式 雅可比符号 中国剩余定理 //中国剩余定理模板代码 typede ...
- NTL密码算法开源库——大整数ZZ类(一)
2021SC@SDUSC 本章综述 大整数ZZ类主要实现了任意长度大整数表示.最大公因数.Jacobi符号和素性检验.笔者将通过逐个分析ZZ.cpp源代码中函数的形式来一步步向读者展示NTL是如何实现 ...
- NTL密码算法开源库——大整数ZZ类(四)
2021SC@SDUSC RSA算法原理 密钥生成的步骤 第一步,随机选择两个不相等的质数p和q. 爱丽丝选择了61和53.(实际应用中,这两个质数越大,就越难破解.) 第二步,计算p和q的乘积n. ...
- 【NTL密码算法开源库-概述】
NTL库基本数据类型 ZZ: big integers(支持不等式运算) ZZ_p: big integers modulo p zz_p: integers mod "single pre ...
- NTL密码算法开源库——模二整数上的矩阵(mat_GF2)
2021SC@SDUSC 模二整数上的矩阵(mat_GF2) 矩阵运算 高斯消元 矩阵运算 具体代码 #include <NTL/matrix.h> #include <NTL/ve ...
- NTL密码算法开源库——大整数ZZ类(二)
2021SC@SDUSC 素数检测 (1)数学基础:费马小定理,二次探测定理,欧拉定理,Miller-Rabin素数测试,同余式, wilson定理,乘法逆元,简化剩余系 费马小定理:若存在整数 a ...
- NTL密码算法开源库——大整数上多项式(ZZX,GF2X)
2021SC@SDUSC 大整数上多项式(ZZX,GF2X) GF(2)域求两多项式的最大公因式 扩展欧几里得求两多项式最大公因式 GF(2)域求两多项式的最大公因式 //在GF(2)域中求两多项式的 ...
最新文章
- ubuntu c/c++ IDE编程环境
- 区块链BaaS云服务(19)趣链Hyperchain
- how Kyma connection is established for the first time
- mysql事务和非事物_mysql事务型与非事务型表1.8.5.3. 事务和原子操作
- 成员函数指针与高性能的C++委托(上篇)
- C语言,两个超大整型数乘法
- realme真我GT大师版来了:继续由深泽直人操刀
- 《剑指offer》——基础数据结构:从简单知识构建细致扎实的思考和实现能力...
- SpringBoot+MyBatis启动报错java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
- 第一次发现国产剧能这么“好笑”,谢谢您嘞!!
- 六石管理学:行政人员也要学会使用SVN保存文档
- AD16导出Gerber文件教程
- 使用VMware创建一个虚拟机,并安装乌班图系统
- Android,App 常用图标尺寸规范
- 手机如何把PDF文件压缩的小一点?教你手机压缩文件方法
- Data URL实现用户头像上传
- java中的方法基础
- 关于意识形成过程的认识
- 计算机u盘病毒清除方式,U盘如何格式化和清理病毒
- 嵌入式Linux驱动学习【9】—— Nor Flash