欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    RSA加解密算法Word文件下载.docx

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

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

    RSA加解密算法Word文件下载.docx

    1、qi=k;while(is_prime_san(q)!素数 q 为 :,qqMAX-1-i-1);return;3.2选择整数e整数e满足/产生与(p-1)*(q-1)互素的随机数void erand(int eMAX,int mMAX)eMAX-1=5;随机产生一个与(p-1)*(q-1)互素的 e :for(i=0;eMAX-1-1;ei=k;while(k=rand()%10)=0)eeMAX-1-1=k;while(coprime( e, m)!eMAX-1;,eeMAX-1-i-1);return ;3.3确定d确定d使得/根据上面的p、q和e计算密钥dvoid rsad(int e

    2、MAX,int gMAX,int *d)int rMAX,n1MAX,n2MAX,kMAX,wMAX;int i,tMAX,b1MAX,b2MAX,tempMAX;mov(g,n1);mov(e,n2);MAX; ki=wi=ri=tempi=b1i=b2i=ti=0;b1MAX-1=0;b10=0;/b1=0;b2MAX-1=1;b20=1;/b2=1;while(1) ki=wi=0; divt(n1,n2,k,w);/k=n1/n2; tempi=0; mul(k,n2,temp);/temp=k*n2; ri=0; sub(n1,temp,r); if(rMAX-1=1) & (r0=

    3、0)/r=0 break; else mov(n2,n1);/n1=n2; mov( r,n2);/n2=r; mov(b2, t);/t=b2; mul(k,b2,temp);/b2=b1-k*b2; b2i=0; sub(b1,temp,b2); mov(t,b1); ti=0; add(b2,g,t); tempi=di=0; divt(t,g,temp,d);由以上的(p-1)*(q-1)和 e 计算得出的 d :dMAX-1;,ddMAX-1-i-1);3.4加密函数利用上面的函数我们可以得到加密使用的公钥加密函数如下所示:加密函数:/加密模块儿,例如C = Pe mod nstru

    4、ct slink *jiami(int eMAX,int nMAX,struct slink *head)struct slink *p;struct slink *h; struct slink *p1,*p2; int m=0,i;n加密后形成的密文内容:p1=p2=(struct slink* )malloc(LEN);h=NULL; p=head; if(head!=NULL)do expmod( p-bignum , e ,n ,p1-bignum);p1-bignumMAX-1;,p1-bignump1-bignumMAX-1-1-i); m=m+1;if(m=1) h=p1;el

    5、se p2-next=p1;p2=p1; p1=(struct slink * )malloc(LEN); p=p-next; while(p!=NULL);p2-next=NULL; p=h;return(h);3.5解密函数利用之前的函数我们可以得到解密的私钥为解密函数如下:解密函数:/解密模块儿,例如P = Cd mod nvoid jiemi(int dMAX,int nMAX,struct slink *h) int i,j,temp;struct slink *p,*p1;char ch65535;p1=(struct slink* )malloc(LEN);p=h;j=0;if(

    6、h! do p1-bignumi=0;bignum , d ,n ,p1- temp=p1-bignum0+p1-bignum1*10+p1-bignum2*100; if ( p1-bignumMAX-2)=0) temp=0-temp; chj=temp; j+;while (p!解密密文后所生成的明文:j;%c,chi);4实验结果运行程序,系统自动生成公钥和私钥:公钥为:私钥为:加密操作:输入明文:wangxinijfioajfioahgiuhaijfalijgoaijrgfiahguajdnandijuhaifhfuiah输出密文,程序运行结果如下所示:解密操作:解密所用的密文就是上

    7、面加密得到的密文。输出明文,程序运行结果如下所示:5实验完整代码#includestring.hstdlib.htime.hmath.hmalloc.h#define MAX 100#define LEN sizeof(struct slink)void sub(int aMAX,int bMAX ,int cMAX );struct slink int bignumMAX;/bignum98用来标记正负号,1正,0负bignum99来标记实际长 struct slink *next;/大数运算void print( int aMAX ) int i;a99;,aa99-i-1); retur

    8、n;int cmp(int a1MAX,int a2MAX) int l1, l2;int i;l1=a199;l2=a299;if (l1l2) return 1; if (l1=0;i-) if (a1ia2i) return 1 ; if (a1i return 0;void mov(int aMAX,int *b)int j;for(j=0;jj+) bj=aj; return ;/大数相乘(向左移)void mul(int a1MAX,int a2MAX,int *c)int i,j,y,x,z,w,l1,l2;l1=a1MAX-1;l2=a2MAX-1;if (a1MAX-2=-

    9、a2MAX-2= cMAX-2=0;else if (a1MAX-2= cMAX-2=;else if (a2MAX-2=l1;l2; x=a1i*a2j; y=x/10; z=x%10; w=i+j; cw=cw+z; cw+1=cw+1+y+cw/10; cw=cw%10;w=l1+l2;if(cw-1=0)w=w-1;cMAX-1=w; /大数相加,注意进位void add(int a1MAX,int a2MAX,int *c)int i,l1,l2;int len,tempMAX;int k=0;if(a1MAX-2=)&(a2MAX-2=)cMAX-2=mov(a1,temp);te

    10、mpMAX-2=0;sub(a2,temp,c);mov(a2,temp);temp98=0;sub(a1,temp,c);if(l1len)for(i=len; ci=(a1i+k)%10; k=(a1i+k)/10;if(k!=0) cl1=k; len=l1+1;else len=l1;else ci=(a2i+k)%10; k=(a2i+k)/10; cl2=k; len=l2+1;c99=len;/大数相减,注意借位void sub(int a1MAX,int a2MAX,int *c)int len,t1MAX,t2MAX;if (a1MAX-2=) & (a2MAX-2=mov(

    11、a1,t1); mov(a2,t2);t1MAX-2=0; t2MAX-2=0;sub(t2,t1,c);else if( a2MAX-2=mov(a2,t2);t2MAX-2=0;add(a1,t2,c);t2MAX-2=if(cmp(a1,a2)=1)len=l2;if (a1i-k-a2i)0)ci=(a1i-a2i-k+10)%10; k=1; else ci=(a1i-a2i-k)%10; k=0; if (a1i-k)显示为980了 len=l1-1; i=2; while (cl1-i=0)/111456-111450=00006,消除0后变成了6 len=l1-i; i+;el

    12、se len=l1;if(cmp(a1,a2)=(-1)len=l1;if (a2i-k-a1i)ci=(a2i-a1i-k+10)%10; ci=(a2i-a1i-k)%10; if (a2i-k)ci=(a2i-k+10)%10; ci=(a2i-k)%10;if(cl2-1=0) len=l2-1; while (cl1-i=0)else if(cmp(a1,a2)=0) len=1; clen-1=0;cMAX-1=len;/取模数void mod(int aMAX,int bMAX,int *c)/c=a mod b,注意:经检验知道此处A和C的数组都改变了 int dMAX;mov

    13、 (a,d);while (cmp(d,b)!=(-1)/c=a-b-b-b-b-b.until(c41245-30000*1-11245-3000*3-2245-300*7-145-30*4=25-25-3*8=1 for(j=0; dj=0; di=1; dMAX-1=i+1; mov(b,g); mul(g,d,e); while (cmp(a,e)!=(-1) ci+; sub(a,e,f); mov(f,a);/f复制给g for(j=i;j+)/高位清零 ej=0;mov(a,w);if (cm=0) cMAX-1=m;else cMAX-1=m+1;/解决了 m=a*b mod

    14、nvoid mulmod(int aMAX ,int bMAX ,int nMAX,int *m)int cMAX,dMAX; di=ci=0;mul(a,b,c); divt(c,n, d,m);mMAX-1;,mmMAX-1-i-1);nm length is : %d n,mMAX-1);/解决了 m=ap mod n的函数问题。void expmod(int aMAX ,int pMAX ,int nMAX,int *m)int tMAX,lMAX,tempMAX; /t放入2,l放入1int wMAX,sMAX,cMAX,bMAX,i;MAX-1; bi=li=ti=wi=0;t0=

    15、2;tMAX-1=1;l0=1;lMAX-1=1; mov(l,temp);mov(a,m); mov(p,b);while(cmp(b,l)!wi=ci=0; divt(b,t,w,c);/ c=p mod 2 w= p /2 mov(w,b);/p=p/2if(cmp(c,l)=0) /余数c=1wi=0;mul(temp,m,w);mov(w,temp);divt(temp,n,w,c);/c为余c=temp % n,w为商w=temp/nmov(c,temp);si=0;mul(m,m,s);/s=a*aci=0;divt(s,n,w,c);/w=s/n;c=s mod nmov (c,m);mul(m,temp,s);/余数s给mmMAX-2=aMAX-2;/为后面的汉字显示需要,用第99位做为标记/k=temp*k%nint is_prime_san(int pMAX ) int i,aMAX,tMAX,sMAX,oMAX; si=oi=ai=ti=0; t0=1; tMAX-1=1; a0=2;/ 2,3,5,7 aMAX-1=1; sub(p,t,s); expmod ( a, s, p ,o); if ( cmp(o,t) != 0 ) a0=3;i+) oi=0; a0=5; a0=7;if ( cmp(o,t) !return 1;


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开