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

📄 rsa.cpp

📁 我自己编写的rsa算法
💻 CPP
字号:
#include <iostream.h>
#include <math.h>
#include "isprime.cpp"
#include "gcd.cpp"
void main()
{
	//---------------输入两个大素数p,q----------------------
	unsigned long p,q; //p,q分别为两个大素数,密钥
	unsigned long r; //密钥
	unsigned long m,n; //公钥
	unsigned long a; //明文
	unsigned long b;//密文
	unsigned long c;//解密后的内容
	unsigned long i;//循环变量
	
	cout<<"请输入两个大素数(p,q):";
	cin>>p>>q;
	while((!isPrime(p))||(!isPrime(q)))
	{
		cout<<isPrime(p)<<isPrime(q);
		cout<<"p和q不符合都是素数的要求"<<endl;
		cout<<"请输入两个大素数(p,q):";
		cin>>p>>q;
	}	
	cout<<"您输入的素数p="<<p<<endl<<"q="<<q<<endl;
	//-----------------输入素数r-----------------
	cout<<"请输入素数r:";
	cin>>r;
	cout<<endl;
	while(r<1||r>(p-1)*(q-1)||gcd(r,(p-1)*(q-1))!=1)
	{
		cout<<"您输入的素数r不符合要求,请重新输入"<<endl;
		cout<<"请重新输入素数r:";
		cin>>r;
	}
	//------------求解密钥过程----------
	m=1;
	while((r*m-1)%((p-1)*(q-1))!=0)
	m++;
	n=p*q;
	cout<<"密钥m="<<m<<",n="<<n;
	//------------加密过程------------
	cout<<"请输入明文a=";
	cin>>a;
	cout<<"您输入的明文为:"<<a<<endl;
		b=1;
		for(i=0;i<m;i++)
		b=(unsigned long)(a*b);
		b=b%n;
	cout<<"加密后的密文为b="<<b<<endl;
	//--------------解密过程----------
		c=1;
		for(i=0;i<r;i++)
		c=(unsigned long)(c*b);
		c=c%(p*q);
	cout<<"解密后的内容为c="<<c;
	


}

⌨️ 快捷键说明

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