通达学院算法与数据结构设计报告。
2014/2015学年第二学期 )
题目: xxxxxxxxxxxxx
专业网络工程
学生姓名 xxxx
班级学号 xxxxxx
指导教师赵学健
指导单位物联网学院
日期 2024年4月10日
rsa密码算法设计。
一、课题内容和要求。
课题名称: rsa密码算法设计。
内容和要求: 构造一个简单的rsa公开密钥系统,完成rsa密钥系统的具体实现,使之能够生成正确的公有密钥和私有密钥,并能用公有密钥对明文进行加密、用私有密钥对密文进行解密。熟悉非对称密钥系统的工作流程,理解加、解密算法的基本原理,能够编程实现生成正确的公有/私有密钥对、用公有密钥对明文进行加密并用私有密钥对密文进行解密的功能。
二、需求分析。
经过论述,我们可以将对功能设计的要求总结如下:
可以按要求的位数生成非对称密钥。
可以保存密钥和装载密钥,密钥保存为纯文本。
可以用指定密钥以rsa算法加密任意一个明文。
可以装载加密过的文件,并用指定的密钥解密还原出原文件。
提示信息完整、操作舒适、图形界面雅观
根据以上分析,我们需要进行编码的程序有:
判断一个数是否为素数
rsa公有密钥、私有密钥的生成
rsa加密解密过程。
三、概要设计。
1、rsa密钥产生过程:
随机选择两个大素数 p与q,且p × q = n;
计算n的欧拉函数值:
n) =p-1) ×q-1)。
随机选择一个大的正整数e,e满足小于n且与(n)互素的条件,即e与(n)的最大公因子是1;
根据e,(n),计算另外一个值d,d是e的乘法逆元,且(n)是它们的模,由模运算的及乘法逆元的性质,d × e ≡ 1 mod (n);
则两个二元组(e,n)、(d,n) 构成rsa的密钥对,选择其中任意一个二元组作为公钥,则另外一个就为私钥,在此,我们定义(e,n)为公钥,(d,n)为私钥。
2、加密过程:先指数运算,然后再取模。
已知明文m,公钥(e,n),私钥(d,n),则加密过程如下:对m的e次方幂指数运算结果再做模n运算,所得结果即为密文c,即由m计算c用公式表示为:
c = me mod n
3、解密过程:先指数运算,然后再取模。
rsa算法加密和解密过程是等价的,解密过程如下:对c的d次方幂运算结果再做模n运算,所得结果即为明文m,即由c推导m可用公式表示为:
m = cd mod n
概要设计框图如下:
四、详细设计。
详细流程图如下:
以下是我编写的**:
判断输入的p和q是否为素数:
/验证是否为质数,如果是返回1
int prime(int m)
int i,prime=1;
if(m==1)
elsereturn prime;
五、测试数据及其结果分析。
主界面。获取共有密钥。
获取私有密钥。
加密过程。解密过程。
六、调试过程中的问题。
1、大数溢出问题:在编写加密和解密过程的**中,我们定义的变量都为int型,在实现c = me mod n功能时,有可能出现me 过大而溢出的现象,导致结果失真。
2、在以下**的编写中,起初我们犯了一个逻辑错误,dowhile(i<1&&i>4),导致程序错误退出,经检查后改dowhile(i<1||i>4)
就能正确运行了。
3、起初在求解e的算法中我们想了一个简便的方法,即令e = n)-1,可是导致求出的公钥和私钥总是一样的,后来经过讨论和查找资料,我们改进了求e的算法实现了密钥的生成,如下:
int finde(int p,int q)
int w,e;
w=(p-1)*(q-1);
for(e=2;e if( gcd1(w,e)==1)
七、课程设计总结。
通过这一周的课程设计,我对rsa密码算法有了初步的了解。这次实验虽然时间不长,但是,我还是收获了许多,首先,要完成一个课程设计师需要我们有严谨的科学态度和扎实的理论知识作为基础和后盾的;其次,还要将理论知识与实际课题相结合,融会贯通。虽然我们之前对rsa并不熟悉,但通过老师的详细讲解和指导、及组员的自主学习和讨论,最终完成了本次课程设计。
通过这次实验,我学到了一些密码学的基础知识及常见的rsa加密、解密算法。在这次课程设计中,我们还存在着有待改进和完善的地方,还需要我们更加深入的去学习和了解这方面的知识,用更加完善的知识储备和自己的思考能力相结合,相信能够将此次课程设计做的更好,也能更好的提高自己的综合素质和能力!
课程设计题目
2011年工厂供配电技术课程设计题目。某大型铸造工厂配电一次系统设计。任务书 广东水利电力职业技术学院电力工程系。2011年6月广州。1.原始资料。1.1全厂用电设备情况 1 负荷大小。全厂用电设备总安装容量 6630kw 10kv侧计算负荷总容量 有功功率4921kw 无功功率1512kvar各车...
课程设计题目
课程设计ii题目。指导教师 叶晓国。1目的与总体要求。课程设计的目的是对学生专业课所学知识的进一步巩固和提高。本课程设计主要为了巩固 计算机网络 课程知识,使学生加深对课内所学的有关计算机网络体系结构 网络协议,网络安全,网络管理等知识的理解,通过实际开发小型的计算机网络工程项目,提高网络协议分析和...
课程设计题目
滨州学院2011 2012学年第二学期。电气工程与自动化专业 本 2009级 单片机原理与应用 课程设计。一 数字秒表设计。设计一个数字秒表,具有如下功能 当用户按下开始键后开始计时,计时范围00 99s,每秒加1,超过99秒自动清零 当用户按下停止键后停止计时,显示不变 当用户按下复位键后,显示0...