#include <math.h>
#include <stdio.h>
void main()
{
long p,q,n,t,e,d,i;
/*定义明文的长度及内容*/
char m[50] = {"Hello,Nice to meet you!"};
long encrypt[50];
char decrypt[50];
p=149,q=193;
n=p*q;
t=(p-1)*(q-1);
/*取得 e*/
i=2;
while(1)
{
long a=t,b=i,c;
a,b=t>i?t,i:i,t;
while(1)
{
if(b==0) break;
c=a%b;
a=b;
b=c;
}
if(a==1)
{
e=i;
break;
}
i++;
}
/*取得 d*/
i=1;
while(1)
{
if((t*i+1)%e==0)
{
d=(t*i+1)/e;
break;
}
i++;
}
/*输出数据与明文*/
printf(" 两个大素数:p=%d, q=%d ;\n 公钥:n=%d, e=%d ;\n 私钥:d=%d \n\n",p,q,n,e,d);
printf(" 明文: %s\n",m);
/*加密*/
for(i=0;i<50;i++)
{
long a=e,b=1,c;
for(c=m[i];a>0;a>>=1)
{
if(a%2==1) b=(b*c)%n;
c=(c*c)%n;
}
encrypt[i]=b;
}
/*十六进形式输出密文*/
printf("\n 利用公钥加密后的密文为: ");
for(i=0;i<50;i++)
printf("%x",encrypt[i]);
/*解密*/
for(i=0;i<50;i++)
{
long a=d,b=1,c;
for(c=encrypt[i];a>0;a>>=1)
{
if(a%2==1) b=(b*c)%n;
c=(c*c)%n;
}
decrypt[i]=(char)b;
}
/*输出解密后的消息*/
printf("\n\n 利用私钥解密后的密文: %s\n",decrypt);
}
qq_41610720
- 粉丝: 1
- 资源: 1
最新资源
- 基于Selenium页面爬取某东商品价格监控:自定义商品价格,降价邮件微信提醒资料齐全+详细文档+源码.zip
- 基于selenium爬取通过搜索关键词采用指定页数的商品信息资料齐全+详细文档+源码.zip
- 基于今日头条自动发文机器人,各大公众平台采集爬虫资料齐全+详细文档+源码.zip
- 基于集众多数据源于一身的爬虫工具箱,旨在安全快捷的帮助用户拿回自己的数据,工具代码开源,流程透明、资料齐全+详细文档+源码.zip
- 基于拼多多爬虫,爬取所有商品、评论等信息资料齐全+详细文档+源码.zip
- 基于爬虫从入门到入狱资料齐全+详细文档+源码.zip
- 基于爬虫学习仓库,适合零基础的人学习,对新手比较友好资料齐全+详细文档+源码.zip
- 基于天眼查爬虫资料齐全+详细文档+源码.zip
- 基于千万级图片爬虫、视频爬虫资料齐全+详细文档+源码.zip
- 基于支付宝账单爬虫资料齐全+详细文档+源码.zip
- 基于SpringBoot+Vue3实现的在线考试系统(三)代码
- 数组-.docx cccccccccccccccccccccc
- Ruby技巧中文最新版本
- Ruby袖珍参考手册pdf英文文字版最新版本
- 融合导航项目全套技术资料100%好用.zip
- 四足机器人技术进展与应用场景
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈