rsa.cpp
来自「RSA,S-DES加密算法,实现了加解密」· C++ 代码 · 共 77 行
CPP
77 行
#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 + =
减小字号Ctrl + -
显示快捷键?