文档介绍:算法与数据结构设计报告(2012/2013学年第二学期)题目:RSA密码算法设计专业物联网工程学生姓名任晓波班级学号B11070601指导教师xxxxxx指导单位物联网学院网络工程系日期2013年6月6日评分细则评分项成绩遵守机房规章制度(5分)上机时的表现(5分)学习态度(5分)程序准备情况(5分)程序设计能力(10分)团队合作精神(5分)课题功能实现情况(10分)算法设计合理性(10分)用户界面设计(10分)报告书写认真程度(5分)内容详实程度(10分)文字表达熟练程度(10分)回答问题准确度(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≡1modØ(n);⑸则两个二元组(e,n)、(d,n)构成RSA的密钥对,选择其中任意一个二元组作为公钥,则另外一个就为私钥,在此,我们定义(e,n)为公钥,(d,n)为私钥。2、加密过程:先指数运算,然后再取模。已知明文M,公钥(e,n),私钥(d,n),则加密过程如下:对M的e次方幂指数运算结果再做模n运算,所得结果即为密文C,即由M计算C用公式表示为:C=Memodn3、解密过程:先指数运算,然后再取模。RSA算法加密和解密过程是等价的,解密过程如下:对C的d次方幂运算结果再做模n运算,所得结果即为明文M,即由C推导M可用公式表示为:M=Cdmodn概要设计框图如下:判断素数判断素数菜单公有密钥私有密钥解密加密输入p,q显示密钥输入明文输入密文显示密文显示明文输入p,q显示密钥四、详细设计详细流程图如下:开始输入p和qp,q是否为素数N=(p-1)*(q-1)求出ee为素数与n互素求出d结束否是否是开始取得明文明文不为空否是将明文加密结束开始取得密文密文不为空否是将密文解密结束以下是我编写的代码:判断输入的p和q是否为素数://验证是否为质数,如果是返回1intPrime(intm){ inti,prime=1; if(m==1) { prime=0; ret