第三十七个知识点: The Number Field Sieve
第三十七个知识点: The Number Field Sieve
数域筛法(The Number Field Sieve ,NFS)是已知的分解算法中最有效率的。它的运行时间取决于被分解的数的大小而不是它的因子的大小。NFS算法的分解基于平方同余理论:给定一个大整数\(N\),我们想要找到两个不同的整数\(x\)和\(y\)使得\(x^2 = y^2 \mod N\)。然后我们希望\(gcd(x-y,N)\)是一个非平凡的A的因子。
我们大致描述一下NFS的工作原理。算法的第一步是选择两个yi'yuan不可约一元\(f_1\)和\(f_2\)分别有度\(d_1\)和\(d_2\)。让\(m \in Z\)是两个多项式共同的根\(f_1(m) = f_2(m) = 0 \mod N\)。让\(\theta_1,\theta_2 \in C\)是分别是\(f_1\)和\(f_2\)的复数根,我们构造两个代数域\(Z[\theta_i] = Q(\theta_i),i = 1,2\)。实际上这给出了两个乘法定义的多项式环。然后我们定义同态\(\phi_i : Z[\theta_i] \rightarrow Z_N\),将\(\theta_i\)映射到\(m\)。NFS算法就是希望能从两个代数环中找出两个平方\(\gamma_1^2\)和\(\gamma_2^2\),使得\(\gamma_1^2 = \Pi_{(a,b) \in S}(a-b*\theta_1)\)和\(\gamma_2^2 = \Pi_{(a,b) \in S}(a-b*\theta_2)\),其中\(\gamma_1 \in Z[\theta_1],\gamma_2 \in Z[\theta_2]\)那么\(S\)是一个互素整数对的有限集合\((a,b)\)。为了找到这样的集合,我们将会对\(a-b*\theta_i\)进行筛选,通过观察\(a-b*\theta_i\)是否是在一些代数基数上平滑的进行筛选。我们多快发现集合\(S\)是算法效率的关键。接下来我们对\(\gamma_i^2\)进行开方,方法有[1]和[2]。一旦两个平方根被确定了,我们通过同态的性质\(\phi_1(\gamma_1)^2 = \phi_2(\gamma_2)^2 \mod N\),同时期望\(gcd(N,\phi_1(\gamma_1)-\phi_2(\gamma_2)) \neq 1\)且\(gcd(N,\phi_1(\gamma_1)-\phi_2(\gamma_2)) \neq N\)是非平凡的因数。
[1] Couveignes, Jean-Marc. "Computing a square root for the number field sieve." The development of the number field sieve. Springer Berlin Heidelberg, 1993. 95-102.
[2] Montgomery, Peter L. "Square roots of products of algebraic numbers." Mathematics of Computation (1993): 567-571. APA
第三十七个知识点: The Number Field Sieve的更多相关文章
- 第十七个知识点:描述和比较DES和AES的轮结构
第十七个知识点:描述和比较DES和AES的轮结构 这是密码学52件事中的第17篇.本周我们描述和比较DES和AES的结构. DES和AES都是迭代分组密码的例子.分组密码通过重复使用一个简单的轮函数来 ...
- 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索
第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...
- NeHe OpenGL教程 第三十七课:卡通映射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Java进阶(三十七)java 自动装箱与拆箱
Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...
- Gradle 1.12用户指南翻译——第三十七章. OSGi 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第三十六关(基于宽字符逃逸GET注入)和三十七关(基于宽字节逃逸的POST注入)
0X1 查看源码 function check_quotes($string) { $string= mysql_real_escape_string($string); return $string ...
- “全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS
第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS PhantomJS虚拟浏览器 phantomjs 是一个基于js的webkit内核无头浏览器 ...
- centos shell编程3【告警系统】 没有服务器端和客户端的概念 main.sh mon.conf load.sh 502.sh mail.php mail.sh disk.sh 第三十七节课
centos shell编程3[告警系统] 没有服务器端和客户端的概念 main.sh mon.conf load.sh 502.sh mail.php mail.sh disk.sh 第三十七 ...
随机推荐
- 巩固javaweb第十三天
巩固内容: HTML 表格 表格由 <table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义).字母 ...
- aboard, abolish
aboard board做动词有上车/船/飞机的意思,boarding就是正在上.board做名词有板的意思,车厢地板的板. a是个词根,有三种意思:1. 以某种状态或方式,如: ablaze, af ...
- Spark(四)【RDD编程算子】
目录 测试准备 一.Value类型转换算子 map(func) mapPartitions(func) mapPartitions和map的区别 mapPartitionsWithIndex(func ...
- Ubuntu下STL源码文件路径+VS2010下查看STL源码
Ubuntu版本信息 然后STL源码位置就在 /usr/include/c++/7/bits /usr/include/c++/7.4.9/bits 这两个文件下都有 然后我日常写程序用的Window ...
- git提交指定文件
1. 用git add 命令添加第一个commit需要的文件 git add file1 git add file2 2. 隐藏其他修改,git stash 的参数中 -k 开关告诉仓库保持文件的完整 ...
- mysql explain using index condition
Using where:表示优化器需要通过索引回表查询数据:Using index:表示直接访问索引就足够获取到所需要的数据,不需要通过索引回表:Using index condition:在5.6版 ...
- Linux学习 - 压缩解压命令
一." .gz "压缩文件 1 压缩语法 gzip [文件] 2 解压语法 gunzip [压缩文件] 3 注 gzip只能压缩文件 gzip不保留原文件 二." . ...
- 大数据处理系列之(一)Java线程池使用
前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究, 前面介绍的东西大多都是从网上搜集整理而来.文中最核心的东西在于后面两节无界队列线程池和 ...
- 【简】题解 AWSL090429 【原子】
预处理出每个原子最近的不能合并的位置 枚举当前位置和前面断开的位置合并 发现还是不能过 考虑用选段树优化 但是因为每次转移的最优点是在前面可以合并的范围内 dp值加上当前的到该点的最大值 因为每个位置 ...
- Mysql资料 存储索引