當前位置:編程學習大全網 - 源碼下載 - 如何用C語言實現RSA算法?

如何用C語言實現RSA算法?

上學期交的作業,已通過老師在運行時間上的測試\x0d\#include \x0d\#include \x0d\\x0d\unsigned long prime1,prime2,ee;\x0d\\x0d\unsigned long *kzojld(unsigned long p,unsigned long q) //擴展歐幾裏得算法求模逆\x0d\{\x0d\unsigned long i=0,a=1,b=0,c=0,d=1,temp,mid,ni[2];\x0d\mid=p;\x0d\while(mid!=1)\x0d\{\x0d\while(p>q)\x0d\{p=p-q;mid=p;i++;}\x0d\ a=c*(-1)*i+a;b=d*(-1)*i+b;\x0d\temp=a;a=c;c=temp;\x0d\temp=b;b=d;d=temp;\x0d\temp=p;p=q;q=temp;\x0d\i=0;\x0d\}\x0d\ni[0]=c;ni[1]=d;\x0d\return(ni);\x0d\}\x0d\\x0d\unsigned long momi(unsigned long a,unsigned long b,unsigned long p) //模冪算法\x0d\{\x0d\unsigned long c;\x0d\c=1;\x0d\if(a>p) a=a%p;\x0d\if(b>p) b=b%(p-1);\x0d\while(b!=0)\x0d\{\x0d\while(b%2==0)\x0d\{\x0d\b=b/2;\x0d\a=(a*a)%p;\x0d\}\x0d\b=b-1;\x0d\c=(a*c)%p;\x0d\}\x0d\return(c);\x0d\}\x0d\\x0d\void RSAjiami() //RSA加密函數\x0d\{\x0d\unsigned long c1,c2;\x0d\unsigned long m,n,c;\x0d\n=prime1*prime2;\x0d\system("cls");\x0d\printf("Please input the message:\n");\x0d\scanf("%lu",&m);getchar();\x0d\c=momi(m,ee,n);\x0d\printf("The cipher is:%lu",c);\x0d\return;\x0d\}\x0d\\x0d\void RSAjiemi() //RSA解密函數\x0d\{\x0d\unsigned long m1,m2,e,d,*ni;\x0d\unsigned long c,n,m,o;\x0d\o=(prime1-1)*(prime2-1);\x0d\n=prime1*prime2;\x0d\system("cls");\x0d\printf("Please input the cipher:\n");\x0d\scanf("%lu",&c);getchar();\x0d\ni=kzojld(ee,o);\x0d\d=ni[0];\x0d\m=momi(c,d,n);\x0d\printf("The original message is:%lu",m);\x0d\return;\x0d\}\x0d\\x0d\void main()\x0d\{unsigned long m;\x0d\char cho;\x0d\printf("Please input the two prime you want to use:\n");\x0d\printf("P=");scanf("%lu",&prime1);getchar();\x0d\printf("Q=");scanf("%lu",&prime2);getchar();\x0d\printf("E=");scanf("%lu",&ee);getchar();\x0d\if(prime1

  • 上一篇:瘋狂Java實戰演義的目 錄
  • 下一篇:springboot源代碼詳解
  • copyright 2024編程學習大全網