RSA加密解密算法.doc

上传人:ni****g 文档编号:544957286 上传时间:2022-12-17 格式:DOC 页数:6 大小:73KB
返回 下载 相关 举报
RSA加密解密算法.doc_第1页
第1页 / 共6页
RSA加密解密算法.doc_第2页
第2页 / 共6页
RSA加密解密算法.doc_第3页
第3页 / 共6页
RSA加密解密算法.doc_第4页
第4页 / 共6页
RSA加密解密算法.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《RSA加密解密算法.doc》由会员分享,可在线阅读,更多相关《RSA加密解密算法.doc(6页珍藏版)》请在金锄头文库上搜索。

1、 网络安全实验设计报告RSA加密解密算法 学院(系): 班 级: 组 别: 指导教师: 一、实验设计的目的当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为获得数字签名和公开钥密码系统的方法的论文中提出的。RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA

2、密钥至少为500位长,一般推荐使用1024位。公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。二、RSA算法的编程思路1. 确定密钥的宽度。2. 随机选择两个不同的素数p与q,它们的宽度是密钥宽度的1/2。3. 计算出p和q的乘积n 。4. 在2和(n)之间随机选择一个

3、数e , e 必须和(n)互素,整数e用做加密密钥(其中(n)=(p-1)*(q-1))。5. 从公式ed 1 mod (n)中求出解密密钥d 。6. 得公钥(e ,n ), 私钥 (d , n) 。7. 公开公钥,但不公开私钥。8. 将明文P (假设P是一个小于n的整数)加密为密文C,计算方法为:C = Pe mod n9.将密文C解密为明文P,计算方法为:P = Cd mod n然而只根据n和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密三、程序实现流程图:1、密钥产生模块:2、解加密流程模块:三、 心得体会通过做此次课程设计,

4、对RSA加密解密算法有了更近一步的了解。RSA通过使用公钥加密、私钥解密,完成了乙方到甲方的一次数据传递,通过私钥加密、公钥解密,同时通过私钥签名、公钥验证签名,完成了一次甲方到乙方的数据传递与验证,两次数据传递完成一整套的数据交互!掌握了RSA算法的基本原理、体验应用效果,以及如何判断一个数是否为素数,以及用扩展的欧几里得算法求乘法逆元问题,以及解密和加密算法。虽然中间遇到了一些难题,但是在老师及同学的帮助下,顺利完成此次课程设计。四、程序附录: 判定一个数是否为素数 bool test_prime(Elemtype m) if (m = 1) return false;else if (m

5、 = 2) return true;else for(int i=2; i=sqrt(m); i+) if(m % i) = 0) return false; break; return true;求最大公约数 Elemtype gcd(Elemtype a, Elemtype b) order(a,b);int r;if(b = 0) return a;else while(true) r = a % b; a = b; b = r; if (b = 0) return a; break;用扩展的欧几里得算法求乘法逆元 Elemtype extend_euclid(Elemtype m, E

6、lemtype bin) order(m,bin);Elemtype a3,b3,t3;a0 = 1, a1 = 0, a2 = m;b0 = 0, b1 = 1, b2 = bin;if (b2 = 0) return a2 = gcd(m, bin); if (b2 =1) return b2 = gcd(m, bin);while(true) if (b2 =1) return b1; break; int q = a2 / b2; for(int i=0; i3; i+) ti = ai - q * bi; ai = bi; bi = ti; 加密 void encrypt() if(

7、flag = 0) coutsetkey first:endl; produce_key();label3:coutm;while (!cin) cin.clear();char a;cina;coutwrong input,Please enter an integer !endl;goto label3;c = modular_multiplication(m,pu.e,pu.n);coutc is:cendl;解密void decrypt() if(flag = 0) coutsetkey first:endl; produce_key();label4:coutc;while (!cin) cin.clear();char a;cina;coutwrong input,Please enter an integer !endl;goto label4;m = modular_multiplication(c,pr.d,pr.n);coutm is:mendl;5

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号