⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 get_e_d.cpp

📁 用C++简单实现RSA算法对字符串的加解密
💻 CPP
字号:
//产生密钥
float CarmSqrt(float x) //求平方根
{ 
	union 
	{ 
		int intPart; 
		float floatPart; 
	}convertor; 
	union 
	{ 
		int intPart; 
		float floatPart; 
	}convertor2; 
	convertor.floatPart = x; 
	convertor2.floatPart = x; 
	convertor.intPart = 0x1FBCF800 + (convertor.intPart >> 1); 
	convertor2.intPart = 0x5f3759df - (convertor2.intPart >> 1); 
	return 0.5f*(convertor.floatPart + (x * convertor2.floatPart)); 
}

int isPrime(int n) //判断是否为素数 
{ 
	int i=0,k=2; 
	k=(int)CarmSqrt(n); 
	for(i=2;i<=k;i++) 
	{ 
		if(n%i==0) 
			break; 
	} 
	if(i>k) 
		return 1; 
	else 
		return 0; 
}  


int co_prime(int a ,int b) // 求互质 
{ 
	int c; 
	do 
	{ 
		if(b==1) 
			return 1; 
		c=a%b; 
		a=b; 
		b=c; 
	}
	while(c!=0); 
	return 0; 
} 
int rnd(int max) //生成随机数 2~max 用来生成e, 
{ //取系统时间做随机数种子 
	int range,n; 
	int min=2,flag=0; 
	time_t t; 
	double j; 
	range=max-min; 
	t=time(NULL); 
	srand((unsigned)t); 
	n=rand(); 
	j=((double)n/(double)RAND_MAX); 
	n=(int)(j*(double)range); 
	n+=min; 
	return n;
	
} 
int r,e,d;
int get_e_d(int p,int q)
{ 
    int t,n;
	r=p*q;
	t=(p-1)*(q-1); 
	n=rnd(t);
	printf("n=%d\n",n);
	e=n/10;
	while(co_prime(t,e)!=1)
	{
		e=e+1;
	}
	for(d=2;d<t;d++)
	{
		if((e*d)%t==1)
			break;
	}
return r,e,d;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -