《计算机信息安全》实验指导书
实验二 公钥密码加密解密实验
实验学时:2学时 实验类型:设计 实验要求:必修 一 实验目的
1、掌握公钥密码体制的基本概念;
2、掌握公钥密码体制加密/解密的工作原理; 3、重点掌握RSA密码算法加密/解密的基本原理;
4、通过用RSA算法对实际的数据进行加密/解密运算来深刻了解RSA的运行原理。
二 实验内容
1、根据RSA密码算法原理,用Turbo C2.0或Visual C++6.0设计编写符合RSA密码算法思想的加密/解密程序。
三 实验环境
1、操作系统:Windows9x/NT/2000/XP 2、编程软件:Turbo C2.0或Visual C++6.0
四 实验原理
RSA算法基于数论构造,是迄今理论上最为完善的非对称密钥密码算法,它的安全性是建立在“大整数的质因子分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量则相当大。
1、RSA的密钥产生过程如下: ①选择两个保密的大素数p和q;
②计算n=pq(公开);φ(n)=(p-1)(q-1)(保密);
③随机选取一个整数e,满足1<e<φ(n)且gcd(φ(n),e)=1(公开);
5
《计算机信息安全》实验指导书
④计算d,满足ed?1(mod φ(n))(保密);
说明:d是e在模φ(n)下的乘法逆元。因为e与φ(n)互素,所以其乘法逆元一 定存在。
⑤得到一对密钥:公钥{e,n},私钥{p,q,d}。
2、RSA的加密过程如下:
①明文数字化,即将明文转换成数字串。
②将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于等 于log2n+1。
③设第i个明文分组对应的数字为mi,对mi作加密运算。即将消息mi以加密指 数e做乘方,并取模n,即:ci=mie mod n (0≤mi 3、RSA的解密过程如下: ①将密文转换成数字串。 ②将以上数字串分段,使得每一段数字均小于n。 ③设第i个密文分组对应的数字为ci,对ci作解密运算。即将明文分组ci以解 密指数d做乘方,并取模n,即: mi=cid mod n ④最后得到的明文M由所有长度相同的明文分组mi组成。 五 实验步骤 本实验为设计型实验,要求学生自己根据实验原理,自行设计实验步骤,利用Turbo C2.0或Visual C++6.0编程语言,编程实现RSA算法。编程内容包括: 1、用函数求出1~65535之间的全部素数。 2、用函数生成一对RSA密钥。 3、并利用该程序实现对一个文件进行加密和解密处理。 6 《计算机信息安全》实验指导书 六 实验结果 1、加密运行 7 《计算机信息安全》实验指导书 2、解密运行 说明:由于int型变量长度为16位,因此n最大只能小于65536。此程序只是 对RSA算法进行验证,无法实现达到安全要求的数据位数。 七 思考题 1、分析影响RSA密码体制安全的因素。 2、分析比较RSA密钥的长度对加密、解密性能的影响。 8