基于RSA方式加密解密面向对象程序设计.docVIP

  • 9
  • 0
  • 约4.07千字
  • 约 12页
  • 2017-10-19 发布于重庆
  • 举报

基于RSA方式加密解密面向对象程序设计.doc

基于RSA方式加密解密面向对象程序设计

题 目 加密解密 课 程 名 称 面向对象程序设计课程设计 目录 1 题目描述 1 2 功能分析 2 2.1运算密钥模块 3 2.2加密模块 3 2.3解密模块 3 2.4 退出 3 系统设计 4 3.1程序总体结构 4 3.2主功能模块设计 5 3.3程序设计 7 3.4类与函数的设计与实现:包括功能、名称、参数说明 8 4运行与测试结果 10 5小结 12 题目描述 加密解密 要求:(1)设计算法,对文件进行基于字符变形的加密/解密。 (2)编写程序,程序运行需要口令,口令存放在一个文件中,为了避免口令文件被阅读,不能以明文形式存放,利用(1)的思路,生成一个口令密文文件,可以修改口令。 功能分析 RSA加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。算法的名字以发明者的姓氏首字母命名:Ron Rivest, Adi Shamir 和Leonard Adleman。虽然自1978年提出以来,RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击,至今(2006年)未被完全攻破。随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。 2.1 运算密钥 RSA算法首先需要运算出密钥, 用户需输入两个素数,程序会给出处理后的密钥。密钥分公钥和私钥两种,公钥用于加密文件,私钥用于解密文件。 2.2 加密 该模块主要用于加密功能。用户输入加密所需的公钥,然后输入所要加密的内容,程序会将其保存在mingwen.txt文件中,加密后的密文会保存于miwen.txt文件中。 2.3 解密 该模块主要用于解密功能。用户需输入与公钥对应的私钥,然后输入加密后的密文,程序会解密该密文。 2.4 退出系统 该模块用于推出本系统。 3 系统设计 3.1 程序总体结构 如图为程序的总体结构图,由于功能不多,程序不是很复杂。系统从mian()函数开始执行。从构造函数开始,根据用户的输入分别执行对应的函数。 3.2 主功能模块设计 程序主要分为三个模块:运算密钥、加密和解密。下面就对这三个模块作详细的介绍。 1.密钥运算 在RSA算法中密钥运算时一个很重要的部分。用户需要输入两个素数。 密钥的产生 1)选取两个保密的大素数p和q ; 2)计算n=p*q , φ(n)=(p-1) (q-1) 其中φ(n)是n的欧拉函数值; 3)选一整数e,满足1eφ(n) , 且gcd(φ(n),e)=1; 4)计算d,满足d.e =1 modφ(n) 即 d 是在模φ(n)下的乘法逆元,因e与φ(n)互素,由模运算可知,它的乘法逆元一定存在; 5){e, n}为公开钥,{d, n}为密钥。 具体流程图如下: 2.加密模块 用户输入公钥后按提示输入所要加密的内容,程序会将其保存在mingwen.txt文件中,加密后的密文会保存于miwen.txt文件中。 加密时首先将明文比特串分组,使得每个分组对应的十进制小于n。然后对每个明文分组m,做加密运算: c=m^e mod n 具体流程图如下: 3. 解密模块 该模块主要用于解密功能。用户需输入与公钥对应的私钥,然后输入加密后的密文,程序会解密该密文。 对密文分组的解密运算为: m=c^d mod n 具体流程图如下: 3.3 程序设计 1)数据结构 Long p,q //存放所输入的两个素数; Long d //存放模φ(n)下的乘法逆元 Long e,n //存放公钥 File fp1 //存放明文 File fp2 //存放密文 2)方法 Int judge_num() //判断素数函数 Void creatkey() //产生密钥函数 Long ckey() //加密函数 Long rkey() //解密函数 3.4 类与函数的设计与实现:包括功能、名称、参数说明 1)Int judge_num()函数 功能:判断输入的数字是否为素数。具体代码如下: int judge_num(long n) { long temp=0,i; for(i=2;i=n/2;i++)

文档评论(0)

1亿VIP精品文档

相关文档