資源簡介
一個系統(tǒng)實現(xiàn)Rabin加密和簽名,已驗證通過
代碼片段和文件信息
#include
#include
#include
int?RabinE()??//Rabin加密
{
???int?pqnmc;
???cout<<“開始Rabin加密“< ???cout<<“請輸入加密公鑰n“< ???cin>>n;
???cout<<“請輸入待加密明文“< ???cin>>m;
???c=(m*m)%n;
???cout<<“密文為c=“< ???return?0;
}
int?shengyu(int?a1int?a2int?m1int?m2int?n)
{
int?m;
????for(m=a1;m {
if(a2==m%m2)
break;
else
m=m+m1;
}
return?m;
}
int?RabinD()??//Rabin解密
{
???int?pqca1a2a3a4mb1in;
???cout<<“開始Rabin解密“< ???cout<<“請輸入加密私鑰pq“< ???cin>>p;
???cin>>q;
???cout<<“請輸入待解密密文“< ???cin>>c;
???b1=(p+1)/4;
???a1=1;
???for(i=1;i<=b1;i++)
???{
???a1=a1*c;
???}
???b1=(q+1)/4;
???a2=1;
???for(i=1;i<=b1;i++)
???{
???a2=a2*c;
???}
???a1=a1%p;
???a2=a2%q;
???a3=p-a1;
???a4=q-a2;
???n=p*q;
???m=shengyu(a1a2pqn);
???cout<<“第一個可能明文為“< ???m=shengyu(a2a3qpn);
???cout<<“第二個可能明文為“< ???m=shengyu(a1a4pqn);
???cout<<“第三個可能明文為“< ???for(m=a3;m ???{
???if(a4==m%q&&a3==m%p)
???break;
???else
???m=m+1;
???}
???cout<<“第四個可能明文為“< ???return?0;
}
int?Rabinqm()???//Rabin簽名
{
???int?pqn
評論
共有 條評論