1、哈工大 数学实验 大作业2RSA加密解密一、 综述历史回顾: RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和Len Adleman在美国麻省理工学院开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。虽然自1978 年提出以来, RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击,至今(2009 年)未被完全攻破。随着越来越多的商业应用和标准化工作, RSA已
2、经成为最具代表性的公钥加密技术。 VISA、MasterCard、IBM、Microsoft 等公司协力制定的安全电子交易标准(Secure Electronic Transactions,SET)就采用了标准 RSA算法,这使得RSA在我们的生活中几乎无处不在,网上交易加密连接、网上银行、身份验证、各种信用卡使用的数字证书 智能移动电话和存储卡的验证功能芯片等,大多数使用 RSA技术。课题研究说明:1、 RSA算法描述RSA算法可以简单描述如下: 密钥生成取素数p、q,令n=p*q;取与(p-1)*(q-1)互质的整数e;由方程d*e=1(mod(p-1)*(q-1)解出d;二元组( e,
3、n)作为公开密钥;二元组( d, n)作为私有密钥; 加密解密设A为原文,B为加密后的密文:加密过程:;解密过程:;2、 程序功能简述所提供的程序基于Mat lab GUI窗口界面,主要功能包括自动生成密钥、手动输入密钥(含密钥合法判断)、输入一串信息(包括中文,英文,标点,空格等等)并将其加密成一串密文、输入一串密文并将其解密回可识别的信息。详细功能见下文说明。3、 尚存在的未解决的问题及不足当生成的密钥n,e,d过大时(n超过227),加密过程可以顺利进行,但是解密过程出错,无法还原为原信息,此问题仍有待解决。另外,单个字符产生的密文长度与n的位数一致,而n一般为8位,这就导致产生的密文长
4、度过大,是原文长度的8倍。二、 程序使用方法,及程序功能1、 程序功能自动/手动输入密钥、加密/解密中文英文、标点空格等信息2、 程序使用方法步骤1. 进入程序后要按自动生成按钮或手动输入按钮生成大整数n,加密指数e,素数p和q,解密指数d;对于自动生成按钮系统会自动生成以上参数,手动输入按钮用户可以输入以上参数步骤2. 将待加密/待解密信息输入到“请输入待加密/待解密信息”框内,然后按加密(解密)按钮,则加密(解密)后的信息将显示在图形界面最下方的“加密/解密后信息”框内。步骤3. 可重复进行步骤1,对于步骤2,只需要按下重置按钮后即可重复操作步骤4. 按退出按钮退出程序。3、 程序各按键的
5、功能自动生成由程序随机生成参数大整数n,加密指数e,素数p和q,解密指数d;手动输入由用户输入参数大整数n,加密指数e,素数p和q,解密指数d;加密将输入框内信息加密解密将输入框内信息解密关于该程序的信息帮助指导用户使用该程序退出退出程序三、 程序运行实例及对实验结果的意见1、 对汉字加密解密2、 对英文及空格加密解密3、 对标点符号进行加密解密4、 对混合信息的加密解密1、 2、 3、 4、 5、 手动输入手动输入错误时Command窗口的报错6、 帮助和关于1、 2、 3、 4、 5、 6、 7、 结果分析及意见根据密码学课程的特点,本文以Mat lab 2010b为开发平台,开发了RSA
6、密码演示系统,将RSA中参数获取、加密、解密等复杂过程以图形的形式形象直观地 表现出来。以上实验结果表明,该系统界面友好、操作方便,便于理解RSA的基本原理。需要注意的是,RSA密码演示系统的Mat lab实现,参数在选取过程中默认有条件n227时,解密过程溢出,解密结果出现乱码,此问题仍然有待解决。改进方法:使用Maple工具箱中的函数,可以实现1024位的密钥的加密解密过程,此时还应优化算法,简短密文长度,可达到效率和安全性均比较高的加密解密。由于Mat lab 2010b并不支持Maple工具箱,也由于自己能力所限,并不能实现这一改进。四、 部分关键代码1、 模幂运算函数(求ab mod
7、 m,a,b和m均为大数)2、 判断素数的函数(采用当下较流行的Miller-Rabin判素法)3、 自动生成参数的函数(x用于设置生成的p,q,e的位数,可变动,p,q,e均生成为212213之间的正整数,并且p,q均通过了Miller-Rabin判定,e满足与(p-1)*(q-1)互质的条件,d满足条件e*d=1(mod(p-1)*(q-1),通过调用GetInv()函数获得)4、 由e和(p-1)*(q-1)求解d的函数(采用拓展Euclidean算法求得)5、 加密算法(将输入的信息转换成ASCII码,然后进行加密)6、 解密算法(将密文还原成ASCII码,然后转换成字符信息)五、 任务分配王亚杰、朱振华共同研究算法、查阅文献及解决遇到的一些问题朱振华完成代码主体王亚杰完成报告主体参考文献:1. 管占明 邓雅娟.RSA加密算法的研究及应用.江苏 连云港.科技广场. 2009.7.2. 叶建龙.RSA 加密中大素数的生成方法及其改进. 甘肃. 廊坊师范学院学报( 自然科学版)第十卷第2期. 2010.4.