欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验四:RSA加密算法.doc

    • 资源ID:878070       资源大小:213.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验四:RSA加密算法.doc

    1、实验四:RSA加、解密算法实现姓名班级11信息安全学号实验目的通过上机操作,使同学生对公钥加密算法RSA密码体制的加、解过程有一个更加清晰地认识。通过本次实验,加深学生对公钥密码体制的认识,为后面的学习打下基础。实验内容及要求 1、在RSA密码体制中,有,其中、均为素数,现给定p=1874113084280153735306658132040384611093897935132757017046995662677351096773572253280762088015535511593,q=60191029407054636927655161587756444761379072535783988

    2、2704111695696928780728208299489784763935240286491,以及公钥=58997,试求出私钥,使得.2、使用上述密钥,选取消息m=“学号+班级+姓名”,例如:11350023中山大学信息科学与技术学院2011级信息安全班张三,分别对其进行加密和解密操作(利用平方-乘算法)。实验结果(可续页)(包括实验代码、实验结果)结果如下:(注:消息的汉字为“11350026中山大学信息科学与技术学院2011级信息安全班叶宏彪”对应的拼音为”11350026zhongshandaxuexinxikexueyujishuxueyuan2011jixinxianquanb

    3、anyehongbiao”)代码如下:#include#include #include#includeusing namespace std;/函数声明#define MAXINT 10000 /整数最大位数int compare(int a,int b);vector bigplus(vector ivec1,vector ivec2); /大整数加法vector bigsub(vector ivec1,vector ivec2); /大整数减法vector bigmult(vector ivec1,vector ivec2); /大整数乘法vector bigdiv(vector ive

    4、c1,vector ivec2); /大整数除法vector bigmod(vector ivec1,vector ivec2); /大整数模运算int compares(vector ivec1,vector ivec2); /大整数比较vector ExtendEcuild(vector ivec1,vector ivec2); /扩展欧几里得算法求乘法逆int power(int m,int n); /幂级数vector decToBin(vector v); /大整数十进制转二进制?vector squAndMult(vector ivec1,vector ivec2,vector i

    5、vec3); /平方-乘算法vector trans(string str); / 字符转换为整数/主函数int main() coutRSAendl; vector p; vector q; vector p1; vector q1; vector n; vector fin; vector e; vector d; vector m; vector s; vector s1; string str1; string str2; string str3; string str4; cout输入大素数:str1; cout输入大素数:str2; for(int i=0;istr1.size()

    6、;+i) p.push_back(str1i-0); for(int i=0;istr2.size();+i) q.push_back(str2i-0); vector w; w.push_back(1); q1=bigsub(q,w); p1=bigsub(p,w); n=bigmult(p,q); fin=bigmult(p1,q1); cout输入公钥:str3; for(int i=0;istr3.size();+i) e.push_back(str3i-0); d=ExtendEcuild(fin,e); cout输入明文:str4; coutendl; coutendl; cout

    7、p*q的乘积n为:endl; for(int i=0;in.size();i+) coutni; coutendl; cout(p-1)*(q-1)的乘积Fi(n)为:endl; for(int i=0;ifin.size();i+) coutfini; coutendl; cout由公钥计算得私钥d为:endl; for(int i=0;id.size();i+) coutdi; coutendl; cout公钥与私钥d的乘积为:endl; vector pro=bigmod(bigmult(e,d),fin); for(int i=0;ipro.size();i+) coutproi; c

    8、outendl; m=trans(str4); cout明文翻译如下:endl; /将消息转换为整数 for(int i=0;im.size();i+) coutmi; coutendl; s=squAndMult(m,decToBin(e),n); s1=squAndMult(s,decToBin(d),n); cout明文加密如下:endl; for(int i=0;is.size();i+) coutsi; coutendl; cout密文解密如下:endl; int temp=0; O0qsdd44z for(int i =0;is1.size();i+) /逐位比较原文和解密后的消息

    9、 if(mi=s1i) temp+; if(temp=s1.size()&temp=m.size() /如果原文和解密后的消息一致 for(int i=0;istr4.size();i+) coutstr4i; else cout解密失败”; /如果不一致 coutb0) return 1; /比较的位数确定返回值 else if (a0bi) return 1; else return -1; vector bigplus(vector ivec1,vector ivec2) vector ivec3;int aMAXINT,bMAXINT,cMAXINT; memset(a,0,sizeo

    10、f(a); memset(b,0,sizeof(b); a0=ivec1.size(); b0=ivec2.size(); for(int i=0;iivec1.size();i+)ai+1=ivec1ivec1.size()-1-i; for(int i=0;ib0?a0:b0); for(i=0;iMAXINT;i+) ci=0; for (i=1;i=10) ci-=10; ci+1+; if (ci+10) len+; c0=len; for (i=len;i=1;i-) ivec3.push_back(ci); return ivec3;vector bigsub(vector iv

    11、ec1,vector ivec2) vector ivec3;int aMAXINT,bMAXINT,cMAXINT; memset(a,0,sizeof(a); memset(b,0,sizeof(b); a0=ivec1.size(); b0=ivec2.size(); for(int i=0;iivec1.size();i+)ai+1=ivec1ivec1.size()-1-i; for(int i=0;ib0?a0:b0); for(i=0;i=1;i-) ivec3.push_back(ci); return ivec3; else if (compare(a,b)0) for (i

    12、=1;i=len;i+) ci+=(ai-bi); if (ci0) ci+=10; ci+1-; else for (i=1;i=len;i+) ci+=(bi-ai); if (ci1 & clen=0) len-; c0=len;if(compare(a,b)=1;i-) ivec3.push_back(ci); return ivec3;vector bigmult(vector ivec1,vector ivec2) vector ivec3;int aMAXINT,bMAXINT,cMAXINT; memset(a,0,sizeof(a); memset(b,0,sizeof(b)

    13、; a0=ivec1.size(); b0=ivec2.size(); for(int i=0;iivec1.size();i+)ai+1=ivec1ivec1.size()-1-i; for(int i=0;iivec2.size();i+)bi+1=ivec2ivec2.size()-1-i; int i,j,len; for (i=0;iMAXINT;i+) ci=0; for (i=1;i=a0;i+) for (j=1;j1 & clen=0) len-; c0=len; for (i=len;i=1;i-) ivec3.push_back(ci); return ivec3; ve

    14、ctor bigdiv(vector ivec1,vector ivec2) vector ivec3; vector ivec4; int aMAXINT,bMAXINT,cMAXINT,dMAXINT; memset(a,0,sizeof(a); memset(b,0,sizeof(b); a0=ivec1.size(); b0=ivec2.size(); for(int i=0;iivec1.size();i+)ai+1=ivec1ivec1.size()-1-i; for(int i=0;iivec2.size();i+)bi+1=ivec2ivec2.size()-1-i; int

    15、i,j,len; if (compare(a,b)0) ivec4.push_back(0); return ivec4; for (i=0;i=1;i-) for (j=d0;j=1;j-) dj+1=dj; d1=ai; d0+; if(compare(d,b)=0&q=0) for (j=1;j=d0;j+) dj-=bj; if (dj0 & dj=0) j-; d0=j; ci+; c0=q; for (i=c0;i=1;i-) ivec3.push_back(ci); for (i=d0;i=1;i-) ivec4.push_back(di); return ivec3;vecto

    16、r bigmod(vector ivec1,vector ivec2) vector ivec3; vector ivec4; int aMAXINT,bMAXINT,cMAXINT,dMAXINT; memset(a,0,sizeof(a); memset(b,0,sizeof(b); a0=ivec1.size(); b0=ivec2.size(); for(int i=0;iivec1.size();i+)ai+1=ivec1ivec1.size()-1-i; for(int i=0;iivec2.size();i+)bi+1=ivec2ivec2.size()-1-i; int i,j

    17、,len; if (compare(a,b)=1;i-) ivec4.push_back(ai); return ivec4; for (i=0;i=1;i-) for (j=d0;j=1;j-) dj+1=dj; d1=ai; d0+; if(compare(d,b)=0&q=0) for (j=1;j=d0;j+) dj-=bj; if (dj0 & dj=0) j-; d0=j; ci+; c0=q; for (i=c0;i=1;i-) ivec3.push_back(ci); for (i=d0;i=1;i-) ivec4.push_back(di); return ivec4;int

    18、 compares(vector ivec1,vector ivec2)int aMAXINT,bMAXINT; memset(a,0,sizeof(a); memset(b,0,sizeof(b); a0=ivec1.size(); b0=ivec2.size(); for(int i=0;iivec1.size();i+)ai+1=ivec1ivec1.size()-1-i; for(int i=0;ib0) return 1; else if (a0bi) return 1; else return -1; vector ExtendEcuild(vector ivec1,vector

    19、ivec2)vector a0,b0,t0,t,q,r,temp,tqt;a0=ivec1;b0=ivec2;t0.push_back(0);t.push_back(1);q=bigdiv(a0,b0);r=bigsub(a0,bigmult(q,b0);while(r00)tqt=bigsub(t0,bigmult(q,t);if(tqt0=0)temp=bigsub(ivec1,tqt);else temp=bigsub(ivec1,bigmod(tqt,ivec1);elsetemp=bigmod(tqt,ivec1);t0=t;t=temp;a0=b0;b0=r;q=bigdiv(a0

    20、,b0);r=bigsub(a0,bigmult(q,b0);return t;int power(int m,int n)int sum=1;if(n=0&m!=0) return 1;elsefor(int i=0;in;i+)sum*=m;return sum;vector decToBin(vector v)vector ivec1;int sum(0);string binary; char ch; int i, j;while(1) j = v.size() - 1; ch = vj % 2 + 0; binary.insert(binary.begin(), 1, ch); fo

    21、r(sum = 0, i = 0; i = j; i+) if(i 1) = 1; sum += vi; if(sum = 0) break; for(int i =0;ibinary.size();i+)ivec1.push_back(binaryi-0);return ivec1;vector squAndMult(vector ivec1,vector ivec2,vector ivec3)vector ivec5;ivec5.push_back(1);for(int i=0;iivec2.size();i+)ivec5=bigmod(bigmult(ivec5,ivec5),ivec3);if(ivec2i=1)ivec5=bigmod(bigmult(ivec5,ivec1),ivec3);return ivec5;vector trans(string str)vector v;vector s;for(int i=0;istr.size();i+)if(stri=a)v.push_back(stri-a+1);coutendl;for(int i=0;iv.size();i+)if(vi10)s.push_back(vi);elses.push_back(vi/10);s.push_back(vi%10);return s;


    注意事项

    本文(实验四:RSA加密算法.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922