《计算机信息安全》实验指导书 下载本文

《计算机信息安全》实验指导书

实验二 公钥密码加密解密实验

实验学时: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