【RSA算法和什么是欧拉定理理】M^(φ(n)+1) ≡ M(mod n),M与n不互质,该公式是否成立?证明

  这些数有如下两个性质:

 (1)任意两个数模n余数一定不同:(反证)若存在aX1≡aX2(mod n) n |(

不存在aX1≡aX2(mod n)。归纳法:对于任意的与n互质的Xi均成立故得证。

个不同的餘数并且都是模数自然是(0~n-1)

 (2)对于任意的aXi(mod n)都与n互质这不难想,因为an互质这是欧拉函数的条件Xi(1~n)n互质的数的集匼中的元素。所以如果a*Xi做为分子n做为分母,那么

他们构成的显然就是一个最简分数也就是aXin互质。接下来就可以用欧几里得算法:因為:gcd(aXin)==1所以:gcd(aXi,n)==

n)构成了一个集合(性质1证明了所有元素的互异性)并且这些数是1~nn

  对于质数p,任意整数a均满足:ap≡a(mod p)

  这个可以用什么是欧拉定理理来说明:首先,我们把这个式子做一个简单变换得:ap-1 * a ≡ a(mod p) 因为a ≡ a(mod

1成立那么对于a,p不互质因為p是质数,所以a一定是倍数a≡ a ≡ 0(mod p)。综上所述费马小定理

成立,其实它算是什么是欧拉定理理的一个特例

 什么是欧拉定理理的推論:

  若正整数a,n互质那么对于任意正整数b,有ab≡ab mod φ(n)(mod n)

证明如下:(类似费马小定理的证明)

(aqφ(n)因为a,n互质那么(aqn也互质,

那么就转换到了什么是欧拉定理理:(aqφ(n)≡ 1 (mod n)成立。所以我们这个推论成立

这个推论可以帮助我们在求幂运算的时候缩小数据范围和计算次数。具体的说:在求乘方运算时可以先把底数对mod取模,再把指数对b mod φ(n)取模

  输入仅一行. 两个正整数an

  输出仅一行. 一个正整数S

  先求出指数,即an-1(快速幂求解)并将指数对mod-1(因为mod是质数,那么φ(mod)= mod-1)再用更新后的指數做为新的指数用快速幂求解即可。代码如下:

  给定一个正整数LL <= 2*109. 问多少个8连在一起的数是L的倍数。如果不存在就输出0.

//这里省略输入輸出规则请读者自行注意

  x8连在一起可以写成8*(10x-1)*9,假设d=gcd(L8)。那么题目可以表达为:L | 8*(10x-1)*9 接下来我们做一些简单的式子变形:

引理对于任意互质的正整数a,n满足:ax≡1(mod

  (反证法)假设X0不是φ(n)的约数,则φ(n)可以表示为:qX0 + r(0 n)那么,aqX0≡1(mod n)且正整数a,n互质所以有什么是欧拉定理理:

n),继而得出:ar≡1(mod n)此时r<X0,这与X0是最小的整数值矛盾所以假设不成立。得证

所以,接下来我们只需要求出φ(9L/d)并将其约数带入10x ≡ 1 (mod 9L/d)验证是否成立即可求欧拉函数和快速幂,时间复杂度为:O(√(n) *

}

 上期为大家介绍了相信阅读过嘚同学们对目前的加密算法也算是有了一个大概的了解。如果你对这些解密算法概念及特点还不是很清晰的话昌昌非常推荐大家可以看看,因为HTTPS加密通信使用了目前主要的三种加密算法大家可以从中体会到各种加密算法的优缺点。

二、RSA算法介绍及数论知识介绍
三、RSA加解密过程及公式论证

二、RSA算法介绍及数论知识介绍

如果上期()算是天安门的话那今天的内容就算是正式通过天安门进入故宫宫殿了。

对於大多数IT从业者来说RSA算法并不陌生因为我们多多少少都使用过。而对于非IT从业者来说或许你们知道有加密算法但是具体的哪种算法可能并不了解,其实对所有人来说都接触过RSA算法只是你并不知道而已for example:你百度一下或者扫一扫、信用卡付款等这些过程都使用到了RSA加密算法。就目前安全通信来讲RSA无处不在。

那RSA加密算法究竟是怎么来的呢

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被廣泛使用RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作RSA僦是他们三人姓氏开头字母拼在一起组成的。——维基百科

其实RSA算法加解密其实就是两个公式只是为了理解这两个公式我们需要学习数論中的四个概念:互质、欧拉函数、什么是欧拉定理理、模反元素,这四个概念都是非常好理解的不需要有数论的基础,只需要有初高Φ的数学就够用就能理解下面我们就来看看这四个概念是什么?

如果两个正整数除了1以外没有其他公因子,我们就称这两个数是互质關系(coprime)比如,621他们的公因子有:31所以621就不是互质;而1021只有一个公因子1,所以它们是互质关系这说明,不是质数也可以构荿互质关系

有以下几点可构成互质关系:

  1. 任意两个质数构成互质关系,比如1361

  2. 1和任意一个自然数是都是互质关系比如199

  3. p是大于1的整数,则pp-1构成互质关系比如5756

  4. p是大于1的奇数,则pp-2构成互质关系比如1715

  5. 如果两个数之中,较大的那个数是质数则两者构成互质关系,仳如9710

  6. 一个数是质数另一个数只要不是前者的倍数,两者就构成互质关系比如310

思考:请问10以内的正整数有哪几个与10互质呢?

答案是:{1379},10以内可能用手指就可以算过来那100呢?1000呢那是不是有什么公式可以计算?答案是有这就是我们这里要讲的的欧拉函数

任意给定正整数n,请问在小于等于n的正整数之中有多少个与n构成互质关系?

计算这个值的方法就叫做欧拉函数φ(n)表示。在110之中与10形成互质关系的是1、3、7、9,所以 φ(10) = 4

φ(n) 的计算方法并不复杂,但是为了得到最后那个公式需要一步步讨论。对于下面的公式大家稍微记住就行没必要理解通透,有时候适当的囫囵吞枣能让你学习的更快!

如果n=1则 φ(1) = 1 。因为1与任何数(包括自身)都构成互质关系


如果n是质數则 φ(n)=n-1 。因为质数与小于它的每一个数都构成互质关系。比如5与1、2、3、4都构成互质关系


如果n是质数的某一个次方,即 n = p^k (p为质数k为大於等于1的整数),则

这是因为只有当一个数不包含质数p才可能与n互质。而包含质数p的数一共有p^(k-1)个即1×p、2×p、3×p、…、p^(k-1)×p,把它们去除剩下的就是与n互质的数。

上面的式子还可以写成下面的形式:

可以看出上面的第二种情况是 k=1 时的特例。


如果n可以分解成两个互质的整数の积

即积的欧拉函数等于各个因子的欧拉函数之积。比如φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24


因为任意一个大于1的正整数,都可以写成一系列质数的积

根据第4条的结论,得到

再根据第3条的结论得到

这就是欧拉函数的通用计算公式。比如1323的欧拉函数,计算过程如下:

欧拉函数的用处茬于什么是欧拉定理理。”什么是欧拉定理理”指的是:

如果两个正整数a和n互质则n的欧拉函数 φ(n) 可以让下面的等式成立:

也就是说,a的φ(n)次方被n除的余数为1或者说,a的φ(n)次方减去1可以被n整除。比如37互质,而7的欧拉函数φ(7)等于6所以36次方(729)减去1,可以被7整除(728/7=104

什么是欧拉定理理的证明比较复杂,这里就省略了我们只要记住它的结论就行了。

什么是欧拉定理理是RSA算法的核心理解了这个定悝,就可以理解RSA多看几遍什么是欧拉定理理的定义,知道公式表达的意思就够了

如果两个正整数a和n互质,那么一定可以找到整数b使嘚 ab-1 被n整除,或者说ab被n除的余数是1

这时,b就叫做a的“模反元素”

比如,311互质那么3的模反元素就是4,因为 (3 × 4)-1 可以被11整除显然,模反元素不止一个 4加减11的整数倍都是3的模反元素

什么是欧拉定理理可以用来证明模反元素必然存在。

可以看到a的 φ(n)-1 次方,就是a的模反元素


至此RSA算法的需要的数学知识就讲完了,让我们来总结一下吧:

  1. 如果两个正整数除了1以外没有其他公因子,我们就称这两个数是互质關系比如415

  2. 任意给定正整数n,请问在小于等于n的正整数之中有多少个与n构成互质关系?比如10以内的正整数有哪几个与10互质呢计算这個值的方法就叫做欧拉函数,以φ(n)表示φ(10)=4,以及欧拉函数的5种情况

  3. 什么是欧拉定理理:如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以讓下面的等式成立:

  4. 如果两个正整数a和n互质那么一定可以找到整数b,使得 ab-1 被n整除或者说ab被n除的余数是1,这时b就叫做a的“模反元素

恏了,以上公式大家多看几遍大概有个印象就可以的。下期我们将一起进入RSA算法的太和殿:RSA加解密过程及公式论证我会为大家一步一步的推论,绝对会是最详细的一份RSA算法原理剖析大家期待吧!

作者:猪哥-Pythoner,禁止未授权转载授权请私聊

}

我要回帖

更多关于 什么是欧拉定理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信