ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:25.47KB ,
资源ID:2943558      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2943558.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RSA初探.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RSA初探.docx

1、RSA初探RSA加密算法初探 分类: 程序设计 2005-03-23 09:21 10710人阅读 评论(26) 收藏 举报 RSA加密算法初探 前言 本文全面的介绍了RSA算法的概念、原理、证明和实现。我在写作本文之前在网上查阅过相关资料,可这些资料不是含糊其辞就是满篇谬误。所以我力求用通俗易懂的文字将算法深入剖析,用最严谨的步骤进行论相关的各项算法,以降低文章的阅读难度。读者只要学过初中代数就可以理解全文,我衷心希望更多读者能认识到加密算法其实并不难。 文中的算法均为伪代码,由于伪代码没有办法进行测试,再加上我个人数学功底比较薄弱,所以错漏之处在所难免,还请各位老师给予指教。质疑或指正请发

2、送电子邮件到fireseed1949,我会认真阅读并回复的! 感谢北航数学系(毕业)李桢老师、西工大计算机系(毕业)张小宁老师在数学上对我的指点。 另注:文中mod就是求余的符号,X mod Y表示X除以Y所得的余数。 概述 RSA算法是世界上第一个既能用于数据加密也能用于数字签名的非对称性加密算法。它易于理解和操作,所以流行甚广。算法的名字以发明者的名字命名,他们是:Ron Rivest,Adi Shamir 和Leonard Adleman。虽然RSA的安全性一直未能得到理论上的证实,但它经历了各种攻击,至今未被完全攻破。为了让读者更容易的理解RSA加密,先大概讲述一下信息加密技术的相关概

3、念和原理。 我们对于在数字媒体上进行交换的数据进行加密的方法称为信息交换加密技术,它分为两类,即对称加密和非对称加密。 在对称加密技术中,对信息的加密和解密都使用相同的钥,也就是说一把钥匙开一把锁。这种加密方法可简化加密处理过程,信息交换双方都不必彼此研究和交换专用的加密算法。如果在交换阶段私有密钥未曾泄露,那么机密性和报文完整性就可以得以保证。对称加密技术也存在一些不足,如果交换一方有N个交换对象,那么他就要维护N个私有密钥,对称加密存在的另一个问题是双方共享一把私有密钥,交换双方的任何信息都是通过这把密钥加密后传送给对方的。如三重DES是DES(数据加密标准)的一种变形,这种方法使用两个独

4、立的56为密钥对信息进行3次加密,从而使有效密钥长度达到112位。 在非对称加密(或称公开密钥加密)体系中,密钥被分解为一对,即公开密钥(公钥)和私有密钥(私钥)。这对密钥中任何一把都可以作为公开密钥,通过非保密方式向他人公开,而另一把作为私有密钥,加以妥善保存。公开密钥用于加密,私有密钥用于解密,私有密钥只能由生成密钥的交换方掌握,公开密钥可广泛公布,但它只对应于生成密钥的交换方。非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信,广泛应用于身份认证、数字签名等信息交换领域。非对称加密体系一般是建立在某些已知的数学难题之上,是计算机复杂性理论发展的必然结果。最具有代表性是RSA公

5、钥密码体制。 在RSA算法中,我们先要获得两个不同的质数P和Q做为算法因子,再找出一个正整数E,使得E与 ( P - 1 ) * ( Q - 1 ) 的值互质,这个E就是私钥。找到一个整数D,使得( E * D ) mod ( ( P - 1 ) * ( Q - 1 ) ) = 1成立,D就是公钥1。设N为P和Q的乘积,N则为公钥2。加密时先将明文转换为一个或一组小于N的整数I,并计算ID mod N的值M,M就密文。解密时将密文ME mod N,也就是M的E次方再除以N所得的余数就是明文。 因为私钥E与( P - 1 ) * ( Q - 1 )互质,而公钥D使( E * D ) mod (

6、( P - 1 ) * ( Q - 1 ) ) = 1成立。破解者可以得到D和N,如果想要得到E,必须得出( P - 1 ) * ( Q - 1 ),因而必须先对N进行因数分解。如果N很大那么因数分解就会非常困难,所以要提高加密强度P和Q的数值大小起着决定性的因素。一般来讲当P和Q都大于2128时,按照目前的机算机处理速度破解基本已经不大可能了。 证明 下面将会开始讨论RSA算法的原理及其算法证明。如果您只关心RSA算法的实现,则可以略过这一步。我把每一个有用的定理都用粗标标记了,对于数学不很在行的朋友可以只了解一下相关定理的说明而不需要验证求证过程了。 一、 费马小定理1的转化 费马小定理:

7、有N为任意正整数,P为素数,且N不能被P整除,则有: NP mod P = N 费马小定理可变形为: NP - N mod P = 0 ( N ( NP - 1 - 1 ) ) mod P = 0 因为 ( N ( NP - 1 - 1 ) ) mod N = 0 所以N和P的公倍数为: N ( NP - 1 - 1 ) (1) 又因为N与P互质,而互质数的最小公倍数为它们的乘积,所以一定存在正整数M使得:N ( NP - 1 - 1 ) = MNP成立。并化简为: NP - 1 - 1 = MP ( NP - 1 - 1 ) mod P = 0 可以变形为: NP - 1 mod P = 1

8、 (2) (2)就是费马小定理的转化定理,为方便叙述,下文简称为定理一。小提示,可能很多人认为费马小定理本来就是(2),实际上不是这样,因为费马小定理的转化非常容易,而转化定理又是一个无论在数学上还是计算机程序上都很常用的公式,所以人们就普遍认为(2)就是费马小定理了。 二、 积模分解公式 有X、Y和Z三个正整数,且X * Y大于Z,则有: ( X * Y ) mod Z = ( ( X mod Z ) * ( Y mod Z ) ) mod Z 证明如下 当X和Y都比Z大时,可以将X和Y表示为: X = ZI + A (1) Y = ZJ + B (2) 将(1)和(2)代入( X * Y

9、) mod Z得: ( ( ZI + A )( ZJ + B ) ) mod Z ( Z( ZIJ + IA + IB ) + AB ) mod Z (3) 因为Z( ZIJ + IA + IB )是Z的整数倍,所以(3)式可化简为: AB mod Z 因为A和B实际上是X和Y分别除以Z的余数,所以有: ( X * Y ) mod Z = ( ( X mod Z ) * ( Y mod Z ) ) mod Z成立。 当X比Z大而Y比Z小时 X = ZI + A 代入( X * Y ) mod Z得: ( ZIY + AY ) mod Z AY mod Z 因为A = X mod Z, 又因为Y

10、 mod Z = Y,所以有: ( X * Y ) mod Z = ( ( X mod Z ) * ( Y mod Z ) ) mod Z成立。 同理,当X比Z小而Y比Z大时,上式也成立。 当X和Y都比Z小时,X = X mod Z,Y = Y mod Z所以有: ( X * Y ) mod Z = ( ( X mod Z ) * ( Y mod Z ) ) mod Z成立。 积模分解公式成立。 三、 定理二 有P和Q两个互质数,如果有X mod P = 0,X mod Q = 0,则有:X mod PQ = 0 证明: 因为P和Q互质,所以它们的公倍数为KPQ(K为整数),最小公倍数为PQ。

11、又因为X为P和Q的公倍数,所以X / PQ = K,所以X mod PQ = 0。 四、 定理三 有P和Q两个互质数,设有整数X和Y满足Y mod P = X,Y mod Q = X,则有:Y mod PQ = X 证明: X = Y mod P 可以表示为: Y = X + kP Y - X = kP 即Y - X可以被P整除,同理Y - X可以被Q整除。又因为P、Q互质,根据定理二可得: ( Y - X ) mod PQ = 0 即 Y mod PQ = X 五、 定理三的逆定理 有P和Q两个互质数,设有整数X和Y满足Y mod PQ = X ,则有:Y mod P = X,Y mod Q

12、 = X 证明: Y mod PQ = X 可以表示为: ( Y X ) mod PQ = 0 显然 ( Y X ) mod P = 0且 ( Y X ) mod Q = 0 所以原命题成立。 六、 RSA定理 若P和Q是两个相异质数,另有正整数R和M,其中M的值与( P - 1 )( Q - 1 )的值互质,并使得( RM ) mod ( P - 1 )( Q - 1 ) = 1。有正整数A,且A PQ,设C = AR mod PQ,B = CM mod PQ则有:A = B 证明: 将C = AR mod PQ代入B = CM mod PQ得: B = ( ( AR mod PQ )M )

13、 mod PQ 根据积模分解公式,可变形为: B = ( AR )M mod PQ B = ARM mod PQ (1) 因为有( RM ) mod ( P - 1 )( Q - 1 ) = 1,所以有: RM = K ( P - 1 )( Q - 1 ) + 1,K为正整数。 代入(1)得: B = AK ( P - 1 )( Q - 1 ) + 1 mod PQ (2) 如果ARM PQ,且A不是P的倍数也不是Q的倍数时,(2)可变形为: B = ( AAK ( P - 1 )( Q - 1 ) ) mod PQ 根据积模分解公式可变形为: B = ( ( A mod PQ )( AK (

14、 P - 1 )( Q - 1 ) mod PQ ) ) mod PQ (3) 根据定理三的逆定理: AK ( P - 1 )( Q - 1 ) mod PQ = ( AK ( P - 1 ) ) ( Q - 1 ) mod Q 根据费马小定理可得: ( AK ( P - 1 ) ) ( Q - 1 ) mod Q = 1,则 AK ( P - 1 )( Q - 1 ) mod PQ = 1 故( 3 )可转化为: B = ( A mod PQ ) mod PQ 因为A PQ,且A不是P的倍数而是Q的倍数时,A可表示为A = NQ,N为一小于A的整数。 那么(2)式可变形为: B = ( NQ

15、 )K ( P - 1 )( Q - 1 ) + 1 mod PQ B = ( NK ( P - 1 )( Q - 1 ) + 1 )( QK ( P - 1 )( Q - 1 ) + 1 ) mod PQ 把Q作为公因子提出来,得: B = ( ( NNK ( P - 1 )( Q - 1 ) ) ( QK ( P - 1 )( Q - 1 ) mod P ) ) Q 用积模分解公式进行分解,得: B = ( ( NNK ( P - 1 )( Q - 1 ) mod P )( QK ( P - 1 )( Q - 1 ) mod P ) mod P ) Q 跟据定理四,NK ( P - 1 )( Q - 1 )和QK ( P - 1 )( Q - 1 )的值都为1,所以有: B = ( ( ( N mod P ) m

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1