- 5
- 0
- 约3千字
- 约 4页
- 2021-11-11 发布于广东
- 举报
RSA算法C语言代码
RSA算法C语言代码
PAGE;.
RSA算法C语言代码
#include
#include
#include
#include
#include
char s[100],*c;
int n,e,d,i,C,j,k=0,len;
int str[100],b[30];
unsigned gcd(unsigned a, unsigned b )
{
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
void Egcd(int a, int b,int x, int y)
{ //ax-by=1
if(b==0||a==0)
{
x=1;
y=0;
return ;
}
if(ab)
{
Egcd(a,b%a,x,y);
x=(int)(b*y+1)/a;
}
else
{
Egcd(a%b,b,x,y);
y=(int)(a*x-1)/b;
}
}
void RSA()
{
int p,q,N,Y;
printf(请输入素数p和q:);
scanf(%d %d,p,q);
n=p*q;
N=(p-1)*(q-1);
//printf(n=%d N=%d\n,n,N);
srand( (unsigned)time( NULL ) ); //初始化随机数
while(1) //产生随机整数e,e与N互质
{
e=rand()%N;
// printf(e==%d\n,e);
if(e==0)
continue;
if(gcd(N,e)==1)
{
break;
}
}
//printf(e=%d\n,e);
Egcd(e,N,d,Y);
// printf(d=%d Y=%d\n,d,Y);
printf(公钥PU={e=%d,n=%d}\n,e,n);
printf(私钥PR={d=%d,n=%d}\n,d,n);
}
void encrypt() //加密函数
{
len=strlen(s);
//hgprintf(len=%d\n,len);
for(i=0;ilen;i++) //去掉s[100]中的空格
{
if(s[i]97||s[i]122)
{
b[k]=i;
k++;
for(j=i;jlen-1;j++)
{
s[j]=s[j+1];
}
len--;
}
}
s[len]=\0; //结束符
printf(密文是:);
for(i=0;ilen;i++)
{
C=1;
//printf(shiji=%d\n,s[i]-97);
for(int j=0;je;j++)
{
C=(C*(s[i]-97))%n;
// printf(C=%ld\n,C);
}
str[i]=C;
printf(%d ,str[i]);
}
printf(\n);
}
void decrypt() //解密函数
{
c=(char*)malloc(len*sizeof(int));
for(i=0;ilen;i++) //实现解密
{
C=1;
for(int j=0;jd;j++)
{
C=(C*(str[i]))%n;
// printf(C=%ld\n,C);
}
// printf(C=%d\n,C);
c[i]=C+97;
}
c[i] = \0;
// puts(c);
for(int z=0;zk;z++) //加空格
{
for(i=0; ilen; i++)
{
if (i==b[z])
{
for(j=len;ji;j--)
{
c[j]=c[j-1];
}
c[i]= ;
len++;
b[z+1]=b[z+1]+(z+1);
break;
}
}
}
c[le
您可能关注的文档
最近下载
- DHG9070A型电热鼓风干燥箱说明书.pdf VIP
- 【老照片】1966年-1967年的彩色中国.docx VIP
- 蒙特利尔认知评估量表.doc VIP
- 解放前后大不同.连环画.1950年.pdf VIP
- 2026年济南工程职业技术学院单招《数学》题库含完整答案详解【考点梳理】.docx VIP
- 1949--1989年国产老电影目录.doc VIP
- 1949--166年国产老电影目录.doc VIP
- 简易精神状态检查量表(-MMSE).doc VIP
- LNG-CNG-LPG(液化石油气、液化天然气、压缩天然气)汽车、罐车事故处置.pptx VIP
- 简易精神状态检查量表(MMSE).docx VIP
原创力文档

文档评论(0)