RSA加密算法的实现
来源:互联网 发布:linux pv命令 编辑:程序博客网 时间:2024/05/16 05:36
#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>int Is_Prime(int m) //判断是否为素数{ int k,i; k=(int)sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) return 1; else return 0;}void legal(int* tp,int* tq) //输入两个素数并检测合法性{ while(1) { printf("输入两个素数并用空格隔开:\n"); scanf("%d%d",tq,tp); if(Is_Prime(*tq)) if(Is_Prime(*tp)) break; else { system("CLS"); printf("%d不是素数请重新输入,",*tp); } else { system("CLS"); printf("%d不是素数请重新输入,",*tq); } }}int MYHF(int tk,int tl) //秘钥合法性检测{ int temp; while(tk!=0) { temp=tl%tk; tl=tk; tk=temp; } if(tl==1) return 1; else return 0;}void miyao(int * tsk,int ol) //输入秘钥{ while(1) { printf("输入秘钥,秘钥与%d互质\nsk=",ol); scanf("%d",tsk); if(MYHF(*tsk,ol)) break; else printf("秘钥要与%d为互质数:",ol); }}int GY(int tsk,int tr) // 公钥{ int b1,b2,s,ys,tmp; //s 商,ys 余数 tmp 临时存数 b1=0,b2=1; while(tsk!=1) { s=tr/tsk; ys=tr%tsk; tmp=b2; b2=b1-b2*s; b1=tmp; tr=tsk; tsk=ys; } return b2;}int jiami(int sk,int m,int r) // 加密{ int i; double t1; double c,tc; c=1,t1=1,i=0; char string[30]; itoa(sk,string,2); //将10进制转换为2进制 i=strlen(string)-1; //获得二进制位数 for(int j=0;j<=i;j++) { c=fmod(c*c,r); if(string[j]=='1') { tc=c; c=fmod(c*m,r); } } t1=(int)ceil(c); return t1; }int main(void){ int q,p,r,ol,sk,pk,mw,pm,gy; //r 公开模函数,ol 欧拉函数,sk 秘钥,pk 公钥 legal(&q,&p); r=q*p; ol=(p-1)*(q-1); printf("q=%d,p=%d,r=%d,ol=%d \n",q,p,r,ol); miyao(&sk,ol); pk=GY(sk,ol); printf("pk=%d \n",pk); printf("输入需要加密的内容:"); scanf("%d",&pm); system("CLS"); printf("明文为=%d\n",pm); pm=jiami(sk,pm,r); printf("密文为=%d\n",pm); printf("输入公钥解密加密的内容:"); scanf("%d",&gy); printf("解密内容为:%d\n",jiami(gy,pm,r));}
0 0
- RSA加密算法的实现
- RSA加密算法的java实现
- RSA加密算法的简单实现
- RSA加密算法的java实现
- RSA与AES混合加密算法的实现
- [python]rsa加密算法的一个简单实现
- RSA加密算法的C语言实现
- RSA加密算法-Java实现
- C++实现RSA加密算法
- python实现RSA加密算法
- RSA加密算法 C++实现
- RSA实现加密算法
- RSA加密算法的学习
- RSA加密算法的基本原理
- RSA加密算法的基本原理
- rsa加密算法的理解
- AES,RSA,ECC加密算法实现
- AES,RSA,ECC加密算法实现
- google sre运维解决 读后感 - 第二篇(16-21章)
- 16.二级商品列表实现(和一级差不多,直接附上源代码)
- 13个Chrome基础使用技巧
- system("color5E");
- redis多种方式实现访问计数器实例详解
- RSA加密算法的实现
- String类
- Java 枚举类型学习
- PAT(A) - 1060. Are They Equal (25)
- 一个好系统决定你的Code
- POJ 2499 Binary Tree
- VC遍历dll导出函数
- ndarray index in numpy
- how to calculate the textsize of TLatex in CernRoot