第三十七个知识点: 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的更多相关文章

  1. 第十七个知识点:描述和比较DES和AES的轮结构

    第十七个知识点:描述和比较DES和AES的轮结构 这是密码学52件事中的第17篇.本周我们描述和比较DES和AES的结构. DES和AES都是迭代分组密码的例子.分组密码通过重复使用一个简单的轮函数来 ...

  2. 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索

    第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...

  3. NeHe OpenGL教程 第三十七课:卡通映射

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. Java进阶(三十七)java 自动装箱与拆箱

    Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...

  5. Gradle 1.12用户指南翻译——第三十七章. OSGi 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  6. SQL注入之Sqli-labs系列第三十六关(基于宽字符逃逸GET注入)和三十七关(基于宽字节逃逸的POST注入)

    0X1 查看源码 function check_quotes($string) { $string= mysql_real_escape_string($string); return $string ...

  7. “全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS

    第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS PhantomJS虚拟浏览器 phantomjs 是一个基于js的webkit内核无头浏览器 ...

  9. 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  第三十七 ...

随机推荐

  1. JmxTest

    package mbeanTest; import java.util.Set; import javax.management.Attribute; import javax.management. ...

  2. archive后upload to app store时遇到app id不可用的问题

    问题如下图 出现此问题的原因有两种: 1.此app id在AppStore中已经存在,也就是说你使用别人注册的app ID ,  如果是这样,你只能更换app ID 2.此app ID是自己的,突然之 ...

  3. Java资源下载

    tomcat http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz     s ...

  4. 1945-祖安 say hello-String

    1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include<bits/stdc++.h> 3 char str[100][40]; 4 char s[10 ...

  5. 使用MyBatis框架时发现的一些小bug

    在大配置MyBatis.xml中:  不能有空节点属性 ,否则启动服务器后点击登录没有反应. 异常问题: ause: java.sql.SQLException: Value '0000-00-00 ...

  6. C#ADO.NET技术总结

    [ADO.NET的主要组件-..NET framework数据提供程序和DataSet(数据集)] 一.DataSet数据集负责对数据库执行命令. 二.NET framework数据提供程序的四个核心 ...

  7. Nginx日志分析脚本

    目录 一.简介 二.脚本 一.简介 运维工作是一个比较复杂的工作,有时候面对上万条的日志,如何作分析?难道一条条的分析? 这估计看两眼就要打哈欠了吧?聪明的人会选择脚本,这就是为什么现在提倡自动化运维 ...

  8. Java值引用和对象引用区别Demo

    转自:http://blog.csdn.net/gundsoul/article/details/4927404 以前就知道JAVA对象分对象引用和值引用,并且还知道8种基础数据类型,即引用时是值引用 ...

  9. 设置项目的开始/完成日期(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 在设定完日程排定方法,或者不作任何设置,依其默认的[项目开始日期]的设置,接下来就要设置项目的开始时间了.依然是在[项目] ...

  10. CF1454A Special Permutation 题解

    Content 给定一个整数 \(n\),请构造出一个长度为 \(n\) 的排列 \(\{a_i\}_{i=1}^n\),使得对于每个 \(a_i\),都有 \(a_i\neq i\). 我们称一个长 ...