作业帮 > 综合 > 作业

用C++写出如下RSA加密算法

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 13:49:43
用C++写出如下RSA加密算法
找出三个数p,q,r.其中p,q是两个相异的质数,r是与(p-1)×(q-1)互质的数,p,q,r这三个数便是私钥;(2)找到m,使得r×m==1 mod (p-1)×(q-1),这个m一定存在,因为r与(p-1)×(q-1)互质,用辗转相除法就可以得到;(3)计算n=p×q (其中:m,n这两个数便是公钥).
加密过程是,(1)若待加密的明文信息流定义为a,并将其看成是一个大整数,如果a>=n的话,就将a表乘s进位(s
UpdateData(TRUE);
m_miwencode=_T("");
CKEY_PRODUCE rsa;
int codelenght,codenum;
codelenght=m_yuanwencode.GetLength();
codenum=codelenght/3;
CString strmod;
strmod.Format(_T("%d"),Model);
ModeNum=strmod.GetLength();
int Cryptograph;
for (int i=0;i<codenum;i++)
{
CString str;
str=m_yuanwencode.Mid(3*i,3);
int j=(str[0]-'0')*100+(str[1]-'0')*10+(str[2]-'0');
int temp= 1;
for(int k=0;k<PublicKey;k++)
{
temp *= j;
if( temp >= Model )
temp %= Model;
if( !temp )
Cryptograph = temp;
}
Cryptograph = temp % Model;
str.Format(_T("%d"),Cryptograph);
int strnum=str.GetLength();
if (strnum!=ModeNum)
{
int s=ModeNum-strnum;
if (s==1)
{
str=_T("0")+str;
}
if (s==2)
{
str=_T("00")+str;
}
if (s==3)
{
str=_T("000")+str;
}
if (s==4)
{
str=_T("0000")+str;
}
}
m_miwencode+=str;
}
UpdateData(FALSE);
m_miwencode=_T("");
vs2005编写的C++(mfc)程序.这个可以不,可以加密字符串,要的话把分给我,发你邮箱里