Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1.     //      RSA ALGORITHM      \\
  2.            
  3.             int p = 13;
  4.             int q = 17;
  5.             long int euler = (p-1) * (q-1);
  6.             long int n = p * q;
  7.  
  8.             int e = 2;
  9.             while (nwd(euler, e)!=1 && e < n)
  10.               {
  11.                 e++;
  12.               }
  13.  
  14.             long int d = 2;
  15.  
  16.             int a = e;
  17.             int b = euler;
  18.  
  19.             int u=1;
  20.             int x=0;
  21.             int w=a;
  22.             int z=b;
  23.             int qq=1;
  24.            
  25.             while(w)
  26.               {
  27.                 if(w<z)
  28.                   {
  29.                 qq=u; u=x; x=qq;
  30.                 qq=w; w=z; z=qq;
  31.                   }
  32.                 qq=w/z;
  33.                 u-=qq*x;
  34.                 w-=qq*z;
  35.               }
  36.             if(z==1)
  37.               {
  38.                 if(x<0)
  39.                   x+=b;
  40.                 d=x;
  41.                 }
  42.            
  43.             printf("p = %i\nq = %i\neuler = %li\nn = %li\ne = %i\nd = %li\n", p, q, euler, n, e, d);
  44.  
  45.             unsigned long long test = 5;
  46.             printf("test = %lli\n", test);
  47.             unsigned long long tmp_pow = pow(test,e);
  48.        
  49.  
  50.               test = fmod(tmp_pow,n);
  51.  
  52.    
  53.               int digits = floor(d*log10(test))+1;
  54.             printf("digits = %i\n", digits);
  55.             char tab[digits+1];
  56.             snprintf(tab, sizeof(tab), "%f", pow(test,d));
  57.            
  58.             printf("result = %s\n", tab);
  59.              
  60.             //test = fmod(tmp_pow, n);
  61.             int i=0;
  62.             int ans=0;
  63.             for(i=0; i<digits; i++)
  64.               {
  65.                 ans=(ans*10 +(int)(tab[i])-48)%n;
  66.                 printf("%i\n", ans);
  67.               }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement