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

    RSA加密解密算法c语言程序doc.docx

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

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

    RSA加密解密算法c语言程序doc.docx

    1、RSA加密解密算法c语言程序docRSA加密解密算法c语言程序#include#include#include/将十进制数转换成二进制,用于检验大素数p和qint zhuan_huan(int b,int a,int k) int t,temp=-1; while(b0) t=b%2; temp+; atemp=t; b=b/2; return temp;/欧几里得算法,用于判断加密指数e是否符合要求int gcd(int n,int b) int r1=n,r2=b,r; while(r20) r=r1%r2; r1=r2; r2=r; return r1;/扩展欧几里得算法求乘法逆元,即求

    2、解密指数dint extend(int n,int b) int q,r,r1=n,r2=b,t,t1=0,t2=1,i=1; while(r20) q=r1/r2; r=r1%r2; r1=r2; r2=r; t=t1-q*t2; t1=t2; t2=t; if(t1=0) return t1%n; else while(t1+i*n)=0;i-) x=d; d=(d*d)%n; if(d=1)&(x!=1)&(x!=n-1) return 0; if(bi=1) d=(d*a)%n; if(d!=1) return 0; else return 1;/快速计算模指数int js_mod(i

    3、nt a,int b,int n) int x=0,y=1,k,i,s1000; k=zhuan_huan(b,s,1000); for(i=k;i=0;i-) x=2*x; y=(y*y)%n; if(si=1) x+; y=(y*a)%n; return y;/主函数。void main() int p,q,e,d,n,yn,m1000,c10000;/c10000存放加密后的数字密文,m1000存放解密后的数字明文,即英文明文在zimu_biao69中的下标。 int i,j; /i,j用于循环遍历数组 int mi_yue; /用户输入的密钥 int count=1; /统计输入密钥的

    4、次数,count3时将不允许用户再输入。 char min_wen1000,re_min_wen1000;/分别为用户输入的明文、密文,解密后的明文。/密钥生成 char zimu_biao69=abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.?!; printf(请输入您要发送的明文文件(小写英文表示):n); printf(*n); gets(min_wen); printf(*n); printf(n加密开始,请按要求操作。nn); printf(请输入第一个大素数p:n); while(1) scanf(

    5、%d,&p); if(Witness(2,p)=1) printf(您输入的第一个大素数 %d 符合要求n,p); break; else printf(您输入的 %d 不是素数,请重新输入:n,p); printf(请输入第二个大素数q:n); while(1) scanf(%d,&q); if(Witness(2,q) printf(您输入的第二个大素数 %d 符合要求n,q); break; else printf(您输入的 %d 不是素数,请重新输入:n,q); n=p*q; yn=(p-1)*(q-1); printf(请输入加密指数(整数)e,且0e%dn,yn);/下面由用户设定

    6、加密指数 while(1) scanf(%d,&e); if(gcd(yn,e)=1) printf(您输入加密指数 %d 与 %d 互素,符合要求n,e,yn); break; else printf(您输入加密指数 %d 与 %d 不互素,请重新输入。n,e,yn); d=extend(yn,e); /求解密指数d printf(nn请记住您的两个大素数分别为p=%d(保密),q=%d(保密),模数n=%d(公开),欧拉函数yn=%d(保密),加密指数e=%d(公钥,公开),。解密指数 d=%d(私钥,保密)nn,p,q,n,yn,e,d);/明文转换过程/* scanf(%s,min_w

    7、en); printf(%s,min_wen); */ for(i=0;istrlen(min_wen);i+) for(j=0;j68;j+) /for(j=0;j26;j+) if(min_weni=zimu_biaoj) mi=j;/将字符串明文换成数字,并存到整型数组m里面,即明文的另一种表示方法/加密过程 for(i=0;istrlen(min_wen);i+) ci=js_mod(mi,e,n); printf(输出密文:n); printf(*n); for(i=0;istrlen(min_wen);i+) printf(%d,ci); printf(n*n);/解密过程 for(i=0;istrlen(min_wen);i+) mi=js_mod(ci,d,n); for(i=0;istrlen(min_wen);i+) re_min_weni=zimu_biaomi;/提示用户解密 printf(nn您有3次输入密钥的机会,密钥正确后将进行解密显示明文,3次输入错误解密将终止,请注意。nn); while(1) scanf(%d,&mi_yue); if(mi_yue=d) printf(密钥输入正确,您得到的明文为:nn); for(i=0;i3) printf(n您已%d次输入的密钥错误,将不允许继续输入n,count-1); break;


    注意事项

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

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




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

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

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


    收起
    展开