信息安全数学基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

寻找梅森素数算法的实现






一、基本实现 为了加速整个计算过程, 我们借鉴Ma yer E W. 的Lu cas Lehmer 检验法数值算法, 同样采用了fft 算法来计 算大数的平方, 这样使得乘方运算的复杂度从O( n2 ) 下降到O( nlog 2 n) 。fft_square 子程序应用fft 算法的思想 进行大数的平方, 即实现Lucas Lehmer 检验法中L ( i) * L ( i) 这个部分。 利用St ream C 和Ker nel C 语言[ 6] 开发了一个最多包含28 个Kernel 的流程序, 简称为LUCAS 程序, 处理 的网格大小为( n/ 8) * 8, 需要迭代iter 次。其中, n 为fft算法的执行长度, iter 为迭代次数, 都是由输入给定的, iter的最大值为所要验证的梅森指数减1。 二、数据流图 LU CAS 所需要的Kernel 数目是由n 的大小决定的, 。通过数据流图可以很清楚地知道Ker nel 的功能、执 行顺序、访存以及Kernel 间的生产者消费者局域性和数据重用局域性。 三、基本流化过程 LUCAS 的流化算法可以根据Cluster 数目N 的不同进行扩展, N 的取值可以为4、8、16 等, 以N= 8 为例具体 介绍。LUCAS 主要的流化工作集中在a、b 这两个流上。对于a 和b , 组织方式是一样的。在Ker nel 中, 它们总 是一个作为输入, 另一个作为输出;在下一个Kernel 时, 又将输入和输出调换位置。因此, 只用in 和out 来标记输 入和输出。 四、根据计算特征进行优化 LUCAS 中, 最主要的程序模式是由一个二重循环构成的, 每次循环从一个二维数组中读入16 个数, 经过一系 列计算以后更新另一个二维数组中的16 个数, 而任意两次循环之间是不存在数据相关性的。这是程序最主要 的计算特征。 优化的效果很明显。经过分析, 主要有以下几个原因: ( 1) 流组织开销降低; ( 2) 并行粒度增大; ( 3) Ker nel 中对流的读取次数减少。
存在最大的梅森素数吗?
ቤተ መጻሕፍቲ ባይዱ

上小学的时候, 我们就知道所有的自然数可以分为素数( 质数)和 合数两类, 当然还特别规定了������ 1 既不是素数, 也不是合数 。 100以内的素数, 从小到大依次是: 2、3、5、7、11、13、17、19、 %%、83、89、97。不用说了, 你一定会背下来。那么素数的个数 是有限多的呢? 我们先假设素数的个数是有限多的, 那么必然存在一个������ 最 大的素数 , 设这个������ 最大的素数 为N。下面我们找出从1 到N 之间的所有素数, 把它们连乘起来, 就是:2 ∃ 3 ∃ 5∃ 7 ∃ 11 ∃ 13 ∃ %%∃ N把这个连乘积再加上1, 得到一个相当大的数M:M= 2 ∃ 3 ∃ 5 ∃ 7 ∃ 11 ∃ 13 %%∃ N+ 1那么这个M 是质数还是合数呢? 乍一想, 不难判断, 既然N 是最大的质数, 而且M> N, 那么M 就应该是合数。 既然M 是合数, 就可以对M 分解质因数。可是试一下就会发现, 我 们用从1 到N 之间的任何一个素数去除M, 总是余1! 这个现实, 又 表明M 一定是素数。这个自相矛盾的结果, 无非说明: 最大的素数 是不存在的! 如果有一个足够大的素数N, 一定可以像上面那样, 找 到一个比N 更大的素数M。既然不存在最大的素数, 就可以推知自 然数中的素数应该有无限多个
RSA算法的描述
ne c(mod N )
c d n(mod N )
验证哥德巴赫猜想

一、什么是哥德巴赫猜想 二、哥德巴赫猜想的验证 三、程序演示
什么是哥德巴赫猜想?

在1742年给欧拉的信中哥德巴赫提出 了以下猜想:任一大于2的整数都可 写成三个质数之和。因现今数学界已 经不使用“1也是素数”这个约定, 原初猜想的现代陈述为:任一大于5 的整数都可写成三个质数之和。欧拉 在回信中也提出另一等价版本,即任 一大于2的偶数都可写成两个质数之 和。今日常见的猜想陈述为欧拉的版 本。把命题"任一充分大的偶数都可 以表示成为一个素因子个数不超过a 个的数与另一个素因子不超过b个的 数之和"记作"a+b"。1966年陈景润证 明了"1+2"成立,即"任一充分大的偶 数都可以表示成二个素数的和,或是 一个素数和一个半素数的和"。
哥德巴赫猜想的验证



一、殆素数 殆素数就是素因子个数不多的正整数。现设N是偶数,虽然现在不能证明N是两个素数之和,但是可以证明它能够写成两个殆素数 的和,即N=A+B,其中A和B的素因子个数都不太多,譬如说素因子个数不超过10。现在用“a+b”来表示如下命题:每个大偶数N 都可表为A+B,其中A和B的素因子个数分别不超过a和b。显然,哥德巴赫猜想就可以写成"1+1"。在这一方向上的进展都是用所谓 的筛法得到的[1]。 二、例外集合 在数轴上取定大整数x,再从x往前看,寻找使得哥德巴赫猜想不成立的那些偶数,即例外偶数。x之前所有例外偶数的个数记 为E(x)。我们希望,无论x多大,x之前只有一个例外偶数,那就是2,即只有2使得猜想是错的。这样一来,哥德巴赫猜想就等价于 E(x)永远等于1。当然,直到现在还不能证明E(x)=1;但是能够证明E(x)远比x小。在x前面的偶数个数大概是x/2;如果当x趋于无穷 大时,E(x)与x的比值趋于零,那就说明这些例外偶数密度是零,即哥德巴赫猜想对于几乎所有的偶数成立。这就是例外集合的思 路。 三、小变量的三素数定理 如果偶数的哥德巴赫猜想正确,那么奇数的猜想也正确。我们可以把这个问题反过来思考。已知奇数N可以表成三个素数之和, 假如又能证明这三个素数中有一个非常小,譬如说第一个素数可以总取3,那么我们也就证明了偶数的哥德巴赫猜想。这个思想就 促使潘承洞先生在1959年,即他25岁时,研究有一个小素变数的三素数定理。这个小素变数不超过N的θ次方。我们的目标是要证 明θ可以取0,即这个小素变数有界,从而推出偶数的哥德巴赫猜想。潘承洞先生首先证明θ可取1/4。后来的很长一段时间内,这方 面的工作一直没有进展,直到1995年展涛教授把潘老师的定理推进到7/120。这个数已经比较小了,但是仍然大于0。 四、几乎哥德巴赫问题 1953年,林尼克发表了一篇长达70页的论文。在文中,他率先研究了几乎哥德巴赫问题,证明了,存在一个固定的非负整数k, 使得任何大偶数都能写成两个素数与k个2的方幂之和。这个定理,看起来好像丑化了哥德巴赫猜想,实际上它是非常深刻的。我们 注意,能写成k个2的方幂之和的整数构成一个非常稀疏的集合;事实上,对任意取定的x,x前面这种整数的个数不会超过log x的k 次方。因此,林尼克定理指出,虽然我们还不能证明哥德巴赫猜想,但是我们能在整数集合中找到一个非常稀疏的子集,每次从这 个稀疏子集里面拿一个元素贴到这两个素数的表达式中去,这个表达式就成立。这里的k用来衡量几乎哥德巴赫问题向哥德巴赫猜 想逼近的程度,数值较小的k表示更好的逼近度。显然,如果k等于0,几乎哥德巴赫问题中2的方幂就不再出现,从而,林尼克的定 理就是哥德巴赫猜想。
最大的孪生素数



最新计算发现现有最大孪生素数为 (100000000000000000×1000000000000+38-1, 100000000000000000×1000000000000+38+1)孪生素数是有限个还是有 无穷多个?这是一个一直吸引着众多的数学家孜孜以求地钻研.早在20世纪 初,德国数学家兰道就推测孪生素数有无穷多.许多迹象也越来越支持这个 猜想.最先想到的方法是使用欧拉在证明素数有无穷多个所采取的方法.设 所有的素数的倒数和为: s=1/2+1/3+1/5+1/7+1/11+... 如果素数是有限个,那么这个倒数和自然是有限数.但是欧拉证明了这 个和是发散的,即是无穷大.由此说明素数有无穷多个.1919年,挪威数学家 布隆仿照欧拉的方法,求所有孪生素数的倒数和: b=(1/3+1/5)+(1/5+1/7)+(1/11+1/13)+... 如果也能证明这个和比任何数都大,就证明了孪生素数有无穷多个了. 这个想法很好,可是事实却违背了布隆的意愿.他证明了这个倒数和是一个 有限数,现在这个常数就被称为布隆常数:b=1.90216054...布隆还发现,对于 任何一个给定的整数m,都可以找到m个相邻素数,其中没有一个孪生素数。
信息安全数学基础 ——实现RSA加密系统
验证哥德巴赫猜想 寻找最大梅森数 寻找最大一对孪生素数
——孙为坤、王效雷、朱科林、郭 红、王轩
实现RSA加密系统

一、RSA简介 二、RSA加密算法的描述 三、程序演示
RSA加密简介

RSA算法是第一个能同时用于加密和数字签名的算 法,也易于理解和操作。
寻找最大梅森数


一、寻找梅森数的猜想 二、寻觅梅森素数漫长曲折历程 三、寻找梅森素数算法的实现 四、存在最大的梅森素数吗
寻找梅森数的猜想

人们都知道,亲数是大于1,并除了它本身和1以外,不能被 其它正整数整除的整数,如2,3 .5.7.··… 梅森素数 (M~~prime)通常记作P,二2”一l(其中P为素数)。梅森素 数是否有无穷个.是否有分布规律,一直是众多研究者试 图攻克的世界知名难题。 法国数学家马林· 梅森 (MarinMeI’8enne)在1644年断定.不大于257的各素数, 只有P二2,3,5,7,一3,17,19,3一,67,127,257,使2,一1是素数, 尽管梅森本人实际只验算了前面的7个数,但人们对其断 定仍深信不疑。 虽然梅森的断定中包含若干错误,但却 极大地激发了人们对Zr一l型素教的研究热情。而当时 梅森所猜想到M,2,也是电脑出现以前人们所确认的最 大梅森素数。 自梅森提出其断定后,人们发现的已知最 大素数几乎都是梅森素数。所以.寻找新的梅森紊数的 历程就几乎等同于寻找欲知最大亲数的历程。
寻找最大一对孪生素数


一、什么是孪生素数 二、最大的孪生素数 三、寻找孪生素数的算法实现 四、程序实现
什么是孪生素数?

所谓孪生素数指的就是这种间隔为 2 的 相邻素数,它们之间的距离已经近得不 能再近了,就象孪生兄弟一样。最小的 孪生素数是 (3, 5),在 100 以内的孪生素 数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),总计有 8 组。 但是随着数字的增大,孪生素数的分布 变得越来越稀疏,寻找孪生素数也变得 越来越困难。那么会不会在超过某个界 限之后就再也不存在孪生素数了呢?
寻觅梅森素数漫长曲折历程




数论中有一些猜想,它们好象美女蛇,既诱惑人又害人,千百年来不知白白吞食 过多少人的才华和心血. 一、1772 年, 瑞士数学家欧拉在双目失明的情况下, 靠心算证明了M31 是一个素数, 它共有10 位数,堪称当时世界上已知的最大素数。欧拉的毅力与技巧令人赞叹不已, 他因此获得了“数学英雄” 的美誉。 二、100 年后, 法国数学家鲁卡斯提出了一个用来判别Mp 是否是素数的重要定理# # # 鲁卡斯定理。 三、1883 年, 数学家波佛辛利用鲁卡斯定理证明了M61也是素数# # # 这是梅森漏掉 的。梅森还漏掉另外两个素数: M89 和M107, 它们分别在1911 年与1914年被数学家 鲍尔斯发现。 四、1922年, 数学家克莱契克进一步验证了M257 并不是素数, 而是合数( 但他没有 给出这一合数的因子, 直到20 世纪80 年代人们才知道它有3 个素因子) 。 五、1930 年, 美国数学家雷默改进了鲁卡斯的工作, 给出了一个针对Mp 的新的素 性测试方法, 即鲁卡斯- 雷默方法。 六、1971 年, 美国哥伦比亚广播公司( CBS) 中断了正常节目播放, 发布了塔可曼使 用IBM360- 91型计算机找到新的梅森素数M19937的消息。1978 年10 月, 两名年仅 18 岁的美国高中生诺尔和尼科尔使用CYBER174 型计算机找到了第25 个梅森素数: M21701。

RSA是被研究的最广泛的公钥算法,从提出到现在 已近二十年,经历了各种攻击的考验,逐渐被人们所 接受,普遍被认为是现在最优秀的公钥方案之一。 RSA的安全性依赖于大数的因子分解。但并没有从理 论上证明破译RSA的难度与大数分解难度等价。既 RSA的最大缺陷是无法从理论上把握它的保密性如何, 而且密码学界很多密码学家更倾向于大数的分解而不 是NPC的问题。
相关文档
最新文档