rsa加密算法
来源:互联网 发布:淘宝女店主猝死艾珺 编辑:程序博客网 时间:2024/06/02 11:32
#include<iostream.h>
#include<math.h>
int rsa(int p,int q,int e) //求解密密钥d的函数(根据Euclid算法)
{
int g,k,r,n1,n2,t;
int b1=0,b2=1;
g=(p-1)*(q-1);
n1=g;
n2=e;
while(1)
{
k=n1/n2;
r=n1-k*n2;
if(r!=0)
{
n1=n2;
n2=r;
t=b2;
b2=b1-k*b2;
b1=t;
}
else
{
break;
}
}
return g+b2%g;
}
int mi(int x,int r,int n) //模n的大数幂乘的快速算法
{
int a,b,c=1;
a=x;
b=r;
while(1)
{
if(b==0)
{
break;
}
if(b%2!=0)
{
b=b-1;
c=(c*a)%n;
}
else
{
b=b/2;
a=(a*a)%n;
}
}
return c;
}
void main()
{
int p,q,e,m;
cout<<"*******************************************************/n/n";
cout<<" RSA公钥密码体制 /n/n";
cout<<"(1) 选取两个大素数p和q(保密)/n";
cout<<"(2) 计算n=pq(公开),g=(p-1)*(q-1) (保密)/n";
cout<<"(3) 随机选取正整数e,1<e<g,满足gcd(e,g)=1,e是公开的加密/n";
cout<<"密钥./n";
cout<<"(4) 计算d,满足de≡1(mod g).d是保密的解密密钥/n";
cout<<"(5) 加密变换: 对明问m∈Z,密文为 c=m^e mod n /n";
cout<<"(6) 解密变换:对密文c∈Z,明文为 m=c^d mod n /n/n";
cout<<"*******************************************************/n/n";
cout<<"请输入大素数p和q(保密)及随机选取的正整数e/n";
cin>>p>>q>>e;
cout<<"得到解密密钥为/n";
cout<<rsa(p,q,e)<<endl;
cout<<"请输入明文/n";
cin>>m;
cout<<"其相应的密文为/n";
cout<<mi(m,e,p*q)<<endl;
cout<<"我们用得到的解密密钥"<<rsa(p,q,e)<<"得到其对应的明文为/n";
cout<<mi(mi(m,e,p*q),rsa(p,q,e),p*q)<<endl;
}
- RSA 加密算法
- RSA加密算法
- rsa加密算法
- RSA加密算法
- Rsa加密算法
- RSA加密算法
- RSA加密算法
- RSA加密算法
- rsa加密算法
- 加密算法:RSA
- RSA加密算法
- RSA加密算法
- RSA加密算法
- RSA 加密算法
- RSA 加密算法
- RSA加密算法
- RSA加密算法
- RSA 加密算法
- 钱
- 必须学会的几个常用网络测试命令
- 收拾心情,继续看书
- 在oracle里如何将String转换成Date?????
- 网络最全最详细的经典命令行
- rsa加密算法
- [转]WIN2003下Web服务器配置
- 原型模式(Prototype Pattern)
- window.open在当前页面打开网页
- 局域网内互访六大经典问题!
- 免安装Oracle运行pl/sql developer
- xstream+xpp超强黄金组合使用方法
- 36招搞定电脑一切难题
- c++引用规则