首页 RSA

RSA

举报
开通vip

RSARSA C语言实现 RSA算法的C语言实现 一、RSA算法的描述 1、选取长度相等的两个大素数p和q,计算其乘积: n = pq 然后随机选取加密密钥e,使e和(p–1)(q–1)互素。 最后用欧几里德扩展算法计算解密密钥d,以满足 ed = 1(mod(p–1) ( q–1)) 即 d = e–1 mod((p–1)(q–1)) e和n是公钥,d是私钥 2、加密公式如下: ci = mi^e(mod n) 3、解密时,取每一密文分组ci并计算: mi = ci^d(mod n) Ci^d =(mi^e)^d = ...

RSA
RSA C语言实现 RSA算法的C语言实现 一、RSA算法的描述 1、选取长度相等的两个大素数p和q,计算其乘积: n = pq 然后随机选取加密密钥e,使e和(p–1)(q–1)互素。 最后用欧几里德扩展算法计算解密密钥d,以满足 ed = 1(mod(p–1) ( q–1)) 即 d = e–1 mod((p–1)(q–1)) e和n是公钥,d是私钥 2、加密公式如下: ci = mi^e(mod n) 3、解密时,取每一密文分组ci并计算: mi = ci^d(mod n) Ci^d =(mi^e)^d = mi^(ed) = mi^[k(p–1)(q–1)+1 ] = mi mi^[k(p–1)(q–1)] = mi *1 = mi 4、消息也可以用d加密用e解密 C源程序 //RSA算法的C程序实现 #include int candp(int a,int b,int c) //数据处理函数,实现幂的取余运算 { int r=1; b=b+1; while(b!=1) { r=r*a; r=r%c; b--; } printf("%d\n",r); return r; } int fun(int x,int y) //公钥e与t的互素判断 { int t; while(y) { t=x; x=y; y=t%y; } if(x == 1) return 0; //x与y互素时返回0 else return 1; //x与y不互素时返回1 } void main() { int p,q,e,d,m,n,t,c,r; printf("请输入两个素数 p,q: "); scanf("%d%d",&p,&q); n=p*q; printf("计算得 n 为 %3d\n",n); t=(p-1)*(q-1); //求n的欧拉数 printf("计算得 t 为 %3d\n",t); printf("请输入公钥 e: "); scanf("%d",&e); if(e<1||e>t||fun(e,t)) { printf("e 不合要求,请重新输入: "); //e<1或e>t或e与t不互素时,重新输入 scanf("%d",&e); } d=1; while(((e*d)%t)!=1) d++; //由公钥e求出私钥d printf("经计算 d 为 %d\n",d); printf("加密请输入 1\n"); //加密或解密选择 printf("解密请输入 2\n"); scanf("%d",&r); switch(r) { case 1: printf("请输入明文 m: "); //输入要加密的明文数字 scanf("%d",&m); c=candp(m,e,n); printf("密文为 %d\n",c);break; case 2: printf("请输入密文 c: "); //输入要解密的密文数字 scanf("%d",&c); m=candp(c,d,n); printf("明文为 %d\n",m);break; } } 三、程序运行结果及相关说明 主函数实现求N的欧拉数、由公钥求解私钥、加密解密选择以及相应的密文明文输出。子函数candp实现加密解密时的求幂取余运算,fun实现e与t的互素判断,已验证e是否符合要求。程序主体参考了网上的相关RSA算法程序,我对其中e的合法性判断、主函数实现的顺序以及相关提示信息做了补充与修改并加上了注释,这样程序可读性更强,运行时更容易操作,思路也更加严密。 当P=43, q=59时,对134进行加密,运行结果如下: 第一次取e为15,与t不互素,提示需重新输入,输入13后,便可以进行正确操作。由于int型变量为十六位,因此n最大只能小于65536,此程序只是对RSA算法的入门,无法实现达到安全要求的数据位数。
本文档为【RSA】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_799840
暂无简介~
格式:doc
大小:55KB
软件:Word
页数:3
分类:工学
上传时间:2011-09-07
浏览量:107