《RSA加密解密算法.ppt》由会员分享,可在线阅读,更多相关《RSA加密解密算法.ppt(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、RSARSA加密解密算法基本概念RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenA dleman开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目
2、前最优秀的公钥方案之一。RSARSA加密解密算法基本概念RSA算法的描述1.密钥的产生。选两个保密的大素数p和q;计算n=p*q,f(n)=(p-1)*(q-1),其中f(n)是n的欧拉函数值;选一整数e,满足1ef(n),且gcd(f(n),e)=1;计算d,满足d*e1mod(f(n),即d是e在模f(n)下的乘法逆元因e与f(n)互素,由模运算可知,它的乘法逆元一定存在;以e,n为公开钥,d,n为秘密钥;RSARSA加密解密算法基本概念2.加密。加密是首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于 log2(n) 。然后每个明文分组m ,作加密运算:cme mod
3、 n3.解密。对明文分组的解密运算为:mcd mod nRSARSA加密算法实现首先选取保密的两个大素数p和q。然后求他们的乘积n=p*q,n的欧拉函数值。然后选取任意的e,并且满足1ef(n),e与n的欧拉函数值f(n)互素。最后利用我们选取的e来加密明文文件。在我的程序中我把p和q 选取100内的素数,并且程序把p和q自动生成。程序利用生成的p和q的值来求它们的乘积n=p*q和n的欧拉函数值f(n)。然后选取与f(n)互素的整数e,按照给定的公式生成密文文件生成密钥和密文的相关公式n=p*q f(n)=(p-1)*(q-1) cme mod n相关的代码与结果如下:RSARSA加密算法实现
4、生成p和q的代码:RSARSA加密算法实现生成e的相关代码:RSARSA加密算法实现生成密文c的相关代码:RSARSA加密算法实现程序的运行结果:RSARSA解密算法实现我们知道公钥(n,e)利用n首先找出两个素数p和q,因为n=p*q然后求n的欧拉函数值f(n),利用e和f(n)找出d,一旦找出来d就解决问题了。在我编写的程序中利用的公式如下:n=p*qf(n)=(p-1)*(q-1)d*e1 mod f(n)mcd mod n相关的代码与结果如下:RSARSA解密算法实现相关n的分解求p和q的代码如下:RSARSA解密算法实现相关求d的代码如下:RSARSA解密算法实现相关求明文m 的代码
5、如下:RSARSA解密算法实现程序的运行结果如下:遇到的问题我写的程序有几种问题:生成的n 超过五位时同样加密,但是解密是有的时候可以正确的解密,有的时候解密结果出错。生成的n超过六位是加密是出现错,比如说加密后的数据负数。有时候生成的密文和原来的明文相同,出现这样的问题可能跟e的选取有关。总结我编写的RSA加密解密算法的程序的功能特别的简单,我编写的是对于五位以下数字的加密和解密。虽然看起来很简单,但是实现出来不那么容易了,我通过编写这么小的一个RSA的加密解密算法,我意识到了RSA算法的安全性很高。虽然我编写了解密的算法,但没有详细的分析不了解密的一些问题,我成功的解密了五位以下的数字的加密,超过了五位找不到到底哪儿出了错误。