第三十七个知识点: 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. 《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

  2. [php代码审计] 通读审计之shangfancms

    前言 大部分的MVC框架,访问的控制器大部分是由外部参数来决定的,那么本篇文章所通读的MVC框架与之前的一系列MVC框架不太一样,它的路由是由程序本身的路由表来决定的. 源码下载 https://ww ...

  3. 容器之分类与各种测试(三)——stack

    stack是栈,其实现也是使用了双端队列(只要不用双端队列的一端,仅用单端数据进出即完成单端队列的功能),由于queue和stack的实现均是使用deque,没有自己的数据结构和算法,所以这俩也被称为 ...

  4. An internal error occurred during: “Updating Maven Project”. Unsupported IClasspathEntry kind=4解决办法

    An internal error occurred during: "Updating Maven Project". Unsupported IClasspathEntry k ...

  5. jenkins的sonarqube之代码检测的两种方法

    #:sonarqube下载地址,我们安装6.7  高版本已经不支持MySQL和Mariadb(最小3G内存) https://www.sonarqube.org/downloads/ #:安装文档 h ...

  6. Linux_spool命令

    spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来保存或打印查询结果. 参数指南 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: ...

  7. window安装ab压力测试

    ab是Apache HTTP server benchmarking tool的缩写,可以用以测试HTTP请求的服务器性能,也是业界比较流行和简单易用的一种压力测试工具包 ## 下载 下载地址:(ht ...

  8. js - 日期、时间 Date对象方法

    Date 是 JS 内置的日期构造函数 var d = new Date();  // 这个是系统当前时间的日期实例 d.getYear(); // 返回 d 实例年份 - 1900 d.getFul ...

  9. RocketMQ源码详解 | Broker篇 · 其五:高可用之主从架构

    概述 对于一个消息中间件来讲,高可用功能是极其重要的,RocketMQ 当然也具有其对应的高可用方案. 在 RocketMQ 中,有主从架构和 Dledger 两种高可用方案: 第一种通过主 Brok ...

  10. 面试官问我TCP三次握手和四次挥手,我真的是

    候选者:面试官你好,请问面试可以开始了吗 面试官:嗯,开始吧 面试官:今天来聊聊TCP吧,TCP的各个状态还有印象吗? 候选者:还有些许印象的,要不我就来简单说下TCP的三次握手和四次挥手的流程吧 候 ...