C语言实现RSA的简单加解密

本文介绍了如何使用C语言实现RSA加密解密,包括加密公式和解密过程,以及在实际编程中需要注意的溢出问题。还探讨了如何在不同函数间传递和访问数据,如使用指针访问其他函数的变量以及函数返回数组的问题。
摘要由CSDN通过智能技术生成

C语言实现 RSA的简单加密解密

完整版可以查看我的另一篇文章:【完整版】C语言实现RSA的加解密

RSA我就不普及了,网上都有,现在用我的实验报告实现一下:
需要的数据有:
两个大素数p,q;
n=pq;
t=(p-1)
(q-1);
公钥e满足(e,t)=1;
私钥d满足de==1(mod n);
加密公式c=m^e(mod n),c是密文,m是明文;
加密的时候注意明文m<n;

下面再展示一下代码块:

//判断两个数是不是互素。 
void gcd(int p,int q){
   
	int temp1,temp2;   //q=temp2*p+temp1 ;
	if(q<p){
   
		temp1=p;
		p=q;
		q=temp1;
	}
	temp1=q%p,temp2=q/p; 
	while(temp1!=0){
   
		
	    q=p;p=temp1;
		temp1=q%p;temp2=q/p;
		}
		if(temp1==0&&temp2==q){
   
			printf("符合条件!\n");
	    }
	    else{
   
	    	printf("不符合条件!\n");
		}
}
//求e关于模(p-1)(q-1)的逆元d:即私钥 
int extend(int e,int t){
   
	int d;
	for(d=0;d<t;d++){
   
		if(e*d%t==1)
	        return d;
	}
}

加密函数中要把符号明文转换成数字明文才可以加密,加密原理是依次把一个个字母对应的ascii码加密࿱

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值