只是一个简单的演示程序,没有用很大的质数,就用了7和17. 呵呵
bool Encipher表明改函数是用了加密还是解密.
CString RSA(CString ASource, bool Encipher)
{
CString SourceText;
int P,Q,E,D,N,Code;
int iLength ,i,j,iTemp;
P=7;
Q=17;
N=P * Q; // 119 (P-1)*(Q-1)=96
E=11; // D*E=1 mod (P-1)*(Q-1) 即 D*E=1 mod 96
D=35; // 11 * 35 =385 ; 385 mod 96 =1
// 公开密钥 < E,N > = < 11,119 >
// 秘密密钥 < D,N > = < 35,119 >
SourceText=ASource;
iLength=SourceText.GetLength();
if(Encipher) Code=E;
else Code=D;
for(i=0;i<iLength;i++ )
{
iTemp=SourceText[i];
for(j=0;j<Code-1;j++)
{
iTemp = iTemp * SourceText[i];
iTemp = iTemp % N;
}
SourceText.SetAt(i,iTemp);
}
return SourceText;
}