RSA加解密实验报告.doc

RSA加解密实验报告.doc

ID:48116441

大小:144.51 KB

页数:15页

时间:2020-01-21

RSA加解密实验报告.doc_第1页
RSA加解密实验报告.doc_第2页
RSA加解密实验报告.doc_第3页
RSA加解密实验报告.doc_第4页
RSA加解密实验报告.doc_第5页
资源描述:

《RSA加解密实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、实践目的与意义(1)通过实践使信息安全专业学生加深对密码学基本原理和加解密理论知识的理解。(2)培养学生在计算机上实现不同类型加密、解密操作运算功能的能力。利用实现的典型加解密方法对输入明文或文件实施加密,并对密文或文件进行解密。能够实现基本的密钥分配方法。(3)培养学生具备简单网络程序开发能力,能够在两个联网终端间进行消息加解密操作。(4)通过参与信息加解密实践,提高学生的分析设计能力、开发过程的团队合作能力、组织管理能力和语言表达能力。二、实践环境操作系统:win7x64开发工具:VS2013上机地点:信息楼机房三、项目组分工在组内,我负责RSA加解密部分的程

2、序编辑和调试四、系统设计功能设计:单机:用户输入明文和两个素数用作密钥,程序输出密文;输入密文和两个密钥,程序输出明文双机:服务器端输入MAC地址后开始运行,用户向服务器端发送明文和两个作为密钥的素数,服务器端向客户端传送密文;用户向服务器发送密文和两个密钥,服务器端向客户端输出明文算法设计:读取用户输入的两个密钥p和q,计算(p-1)*(q-1)的值,记为t,再任取一个与t互素的数,记为n,计算nx=1(modt)中x的值,a^n(modpq)为加密,得到密文b;b^x(mod253)为解密,得到明文a。界面交互设计:使用组内统一的加解密界面模板,具体界面设计见程序

3、运行截图五、系统实现程序及界面运行截图:双机加解密:151515单机加解密:程序代码及注释:头文件:#pragmaonceclassRSA{public:RSA();~RSA();staticCStringEncrpt(CStringplaintext,intkey);staticCStringDecrypt(CStringciphertext,intkey);CStringencrpt(CStringplaintext,intkey);CStringdecrypt(CStringciphertext,intkey);intprime(intm);intgcd(int

4、x,inty);15intExtendedEuclidean(inta,intb,int*r);intpower(inta);intmod(intf,intg,inth);};主程序:#include"stdafx.h"#include"RSA.h"RSA::RSA(){}RSA::~RSA(){}intRSA::prime(intm)//判断是否为素数{inti;for(i=2;i

5、%y;}returnx;}intRSA::ExtendedEuclidean(inta,intb,int*r)//根据扩展欧几里得算法求乘法逆元15{intx1,x2,x3,y1,y2,y3,t1,t2,t3,c;x1=y2=1;x2=y1=0;if(a>=b){x3=a;y3=b;}else{x3=b;y3=a;}while(1){c=x3/y3;t1=x1-c*y1;t2=x2-c*y2;x1=y1;x2=y2;t3=x3-c*y3;x3=y3;y1=t1;y2=t2;y3=t3;if(y3==1){*r=y2;return1;;}}}intRSA::power(

6、inta)//2的a次幂{intb=1,i;for(i=1;i<=a;i++){b=b*2;}returnb;}15intRSA::mod(intf,intg,inth)//加解密{inti;ints=1;for(i=1;i<=g;i++){s=s*f;s=s%h;}returns;}CStringRSA::encrpt(CStringplaintext,intkey){CStringciphertext;inti,j,b,a,sum,k;intt,temp,l=0,ch=1,f,l1;intp,q,n,y,e,d=0;intnum[200];charplain[10

7、0];intplain1[100],cipher[100],al[10000],bl[10000];//printf("请输入第一个大素数p:");//输入两个大素数p,qwhile(1){//scanf("%d",&p);p=519817;if(prime(p)==1)break;elseprintf("p不是素数,请重新输入:");}//printf("请输入第二个大素数q:");while(1){//scanf("%d",&q);q=521887;if(prime(q)==1)break;elseprintf("q不是素数,请重新输入:");}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。