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

📄 rsa.cpp

📁 RSA,S-DES加密算法,实现了加解密
💻 CPP
字号:
#include<iostream.h>

int gcd(int m,int n);
int power(int x,int y,int n);
int rsa(int pt,int key,int & ct);

void main()
{
	int i=0,t=0;
	int pt=0,key=0,ct=0;
	
	cout<<"\n输入明文:";
	cin>>pt;
	
	cout<<"\n输入密钥:";           
    cin>>key;

    t=rsa(pt,key,ct);
	while(t==-1){
		cout<<"密钥非法,重新输入:";
		cin>>key;
		t=rsa(pt,key,ct);
	}

	cout<<"\n所得密文:"<<ct<<endl;

}

int rsa(int pt,int key,int & ct)
{
	int e=key,d,k=0,c=0;
	int p=17,q=11;
	int n=p*q,m=(p-1)*(q-1);

	if(e<=1||e>=m||gcd(e,m)!=1)
		return -1;
	else{
		while((k*m+1)%e)  //  计算私钥
			k++;
		d=(k*m+1)/e;
	}

	ct=power(pt,e,n)%n;   	// 加密

	cout<<"\np=17,q=11,n=pq="<<n<<",o(n)="<<m<<endl;
	cout<<"public key: { "<<e<<" , "<<n<<" }\n";
	cout<<"private key:{ "<<d<<" , "<<n<<" }\n";

	return 0;
	
}

int gcd(int m,int n)
{
	int a,b,r;
	if(m>n){ a=m;b=n; }
	else{ a=n;b=m; }
	r=b;
	while(r!=0){
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}

int power(int x,int y,int n)
{
	int s=1,t=x,u=y;

	while(u){
		if(u&1) s=(s*t)%n;
		u=u>>1;
		t=(t*t)%n;
	}
	return s;
}

⌨️ 快捷键说明

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