1、1网络安全实验设计报告RSA 加密解密算法学院(系): 班 级: 组 别: 指导教师: 2一、实验设计的目的当前最著名、应用最广泛的公钥系统 RSA 是在 1978 年,由美国麻省理工学院(MIT)的 Rivest、Shamir 和 Adleman 在题为获得数字签名和公开钥密码系统的方法的论文中提出的。RSA 算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为
2、提高保密强度,RSA 密钥至少为 500 位长,一般推荐使用 1024 位。公钥加密算法中使用最广的是 RSA。RSA 算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决 DES 算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用 RSA 来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。此外,RSA 加密系统还可应用于智能 IC 卡和网络安全产品。二、RSA 算法的编程思路1. 确定密钥的宽度。 2. 随机选择两个不同的素数 p 与 q,它们的宽度是密钥宽度的 1/2。3.
3、 计算出 p 和 q 的乘积 n 。 4. 在 2 和 (n)之间随机选择一个数 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 是不可能的。因此,任何人都可对明文进行加
4、密,但只有授权用户(知道 d)才可对密文解密三、程序实现流程图:1、密钥产生模块:32、解加密流程模块:4三、 心得体会通过做此次课程设计,对 RSA 加密解密算法有了更近一步的了解。RSA 通过使用公钥加密、私钥解密,完成了乙方到甲方的一次数据传递,通过私钥加密、公钥解密,同时通过私钥签名、公钥验证签名,完成了一次甲方到乙方的数据传递与验证,两次数据传递完成一整套的数据交互!掌握了 RSA 算法的基本原理、体验应用效果,以及如何判断一个数是否为素数,以及用扩展的欧几里得算法求乘法逆元问题,以及解密和加密算法。虽然中间遇到了一些难题,但是在老师及同学的帮助下,顺利完成此次课程设计。四、程序附录:判定一个数是否为素数 bool test_prime(Elemtype m) if (m m;while (!cin) cin.clear();char a;cina;coutc;while (!cin) cin.clear();char a;cina;cout“wrong input,Please enter an integer !“endl;goto label4;m = modular_multiplication(c,pr.d,pr.n);cout“m is:“mendl;