开发工具:
文件大小: 1kb
下载次数: 0
上传时间: 2015-01-16
详细说明: 网络安全中的经典问题,RSA算法。#include #include int sushupanduan(int a, int b) { int s,i,f,g; s = sqrt(a); for(i = 2; i <= s; i++) if(a % i == 0) break; if(i > s) f=1; else return 0; s = sqrt(b); for(i = 2; i <= s; i++) if(b % i == 0) break; if(i > s) g = 1; else return 0; if(f == 1 && g == 1) return 1; return 0; } int husu(int a, int b) { if(a % b == 0) return b; else husu(b,a%b); } int find_e(int m) { int e; for(e = 4; e < m; e++) { i f(husu(e,m) == 1) break; else continue; } return e; } int find_d(int e, int m) { int d; for(d = m / e + 1; d < m; d++) { if(d * e % m == 1) break; else continue; } return d; } int quick(int a,int b,int n) { int c = 0,f = 1,k = 0,i; int er[50]; while(b > 0) { er[k] = b % 2; b = b / 2; k++; } for(i = k;i >= 0;i--) { c = 2 * c; f = (f * f) % n; if(er[i] == 1) { c = c + 1; f = (f * a) % n; } } return f; } main() { int p,q,f,n,m,e,d,M,rsa_jia,rsa_jie;//f为标志,m为ψ(n),其余变量均与书上相同. printf("请输入两个比较大的素数p,q(用,隔开):"); scanf("%d,%d",&p,&q); printf("\n"); f = sushupanduan(p,q); if(f == 0) { printf("您输入的p,q中有不为素数的数,请重新输入:"); scanf("%d,%d",&p,&q); printf("\n"); } else { n = p * q; m = (p-1) * (q-1); } e = find_e(m); d = find_d(e,m); printf("公钥:={%d,%d}\n",e,n); printf("私钥:={%d,%d}\n",d,n); printf("请输入明文M:"); scanf("%d",&M); rsa_jia = quick(M,e,n); printf("加密:%d\n",rsa_jia); rsa_jie = quick(rsa_jia,d,n); printf("解密:%d\n",rsa_jie); } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.