哈工大 数学实验 大作业2

更新时间:2023-09-05 05:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数学实验

RSA加密解密

一、 综述

历史回顾:

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和Len Adleman在美国麻省理工学院开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。虽然自1978 年提出以来, RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击,至今(2009 年)未被完全攻破。随着越来越多的商业应用和标准化工作, RSA已经成为最具代表性的公钥加密技术。 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, n)作为公开密钥;

二元组( d, n)作为私有密钥;

加密解密

设A为原文,B为加密后的密文:

加密过程:B=Ae mod n ;

解密过程:A=Bd mod n;

2、 程序功能简述

所提供的程序基于Mat lab GUI窗口界面,主要功能包括自动生成密钥、手动输入密钥(含密钥合法判断)、输入一串信息(包括中文,英文,标点,空格等等)并将其加密成一串密文、输入一串密文并将其解密回可识别的信息。详细功能见下文说明。

3、 尚存在的未解决的问题及不足

当生成的密钥n,e,d过大时(n超过2^27),加密过程可以顺利进行,但是解密过程出错,无法还原为原信息,此问题仍有待解决。

另外,单个字符产生的密文长度与n的位数一致,而n一般为8位,这就导致产生的密文长度过大,是原文长度的

数学实验

8倍。

二、 程序使用方法,及程序功能

1、 程序功能

自动/手动输入密钥、加密/解密中文英文、标点空格等信息

2、 程序使用方法

步骤1. 进入程序后要按自动生成按钮或手动输入按钮生成大整数n,加密指数e,素数p和q,解密指数d;对于自动生成按钮系统会自动生成以上参数,手动输入按钮用户可以输入以上参数

步骤2. 将待加密/待解密信息输入到“请输入待加密/待解密信息”框内,然后按加密(解密)按钮,则加密(解密)后的信息将显示在图形界面最下方的“加密/解密后信息”框内。

步骤3. 可重复进行步骤1,对于步骤2,只需要按下重置按钮后即可重复操作

步骤4. 按退出按钮退出程序。

3、 程序各按键的功能

自动生成——由程序随机生成参数大整数n,加密指数e,素数p和q,解密指数d;

手动输入——由用户输入参数大整数n,加密指数e,素数p和q,解密指数d;

加密——将输入框内信息加密

数学实验

解密——将输入框内信息解密

关于——该程序的信息

帮助——指导用户使用该程序

退出——退出程序

三、 程序运行实例及对实验结果的意见

1、 对汉字加密解密

数学实验

2、 对英文及空格加密解密

数学实验

3、 对标点符号进行加密解密

数学实验

4、 对混合信息的加密解密

数学实验

数学实验

5、 手动输入

手动输入错误时Command窗口的报错

6、 帮助和关于

数学实验

7、 结果分析及意见

根据密码学课程的特点,本文以Mat lab 2010b为开发平台,开发了RSA密码演示系统,将RSA中参数获取、加密、解密等复杂过程以图形的形式形象直观地 表现出来。以上实验结果表明,该系统界面友好、操作方便,便于理解RSA的基本原理。需要注意的是,RSA密码演示系统的Mat lab实现,参数在选取过程中默认有条件n<2^27,并没有达到安全性要求,由于Mat lab自身的数据特点,也不可能达到。实际上,随着计算机、数论以及并行技术的不断发展,RSA安全参数的要求越来越大,长期安全应该至少使用1024位二进制数。

另外,当设置n>2^27时,解密过程溢出,解密结果出现乱码,此问题仍然有待解决。

改进方法:使用Maple工具箱中的函数,可以实现1024位的密钥的加密解密过程,此时还应优化算法,

简短密文长度,

数学实验

可达到效率和安全性均比较高的加密解密。由于Mat lab 2010b并不支持Maple工具箱,也由于自己能力所限,并不能实现这一改进。

四、 部分关键代码

1、 模幂运算函数(求a^b mod m,a,b和m均为大数)

2、 判断素数的函数(采用当下较流行的Miller-Rabin判素法)

数学实验

数学实验

3、 自动生成参数的函数(x用于设置生成的p,q,e的位数,

可变动,p,q,e均生成为2^12~2^13之间的正整数,并且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.

本文来源:https://www.bwwdw.com/article/pb6i.html

Top