Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // RSA ALGORITHM \\
- int p = 13;
- int q = 17;
- long int euler = (p-1) * (q-1);
- long int n = p * q;
- int e = 2;
- while (nwd(euler, e)!=1 && e < n)
- {
- e++;
- }
- long int d = 2;
- int a = e;
- int b = euler;
- int u=1;
- int x=0;
- int w=a;
- int z=b;
- int qq=1;
- while(w)
- {
- if(w<z)
- {
- qq=u; u=x; x=qq;
- qq=w; w=z; z=qq;
- }
- qq=w/z;
- u-=qq*x;
- w-=qq*z;
- }
- if(z==1)
- {
- if(x<0)
- x+=b;
- d=x;
- }
- printf("p = %i\nq = %i\neuler = %li\nn = %li\ne = %i\nd = %li\n", p, q, euler, n, e, d);
- unsigned long long test = 5;
- printf("test = %lli\n", test);
- unsigned long long tmp_pow = pow(test,e);
- test = fmod(tmp_pow,n);
- int digits = floor(d*log10(test))+1;
- printf("digits = %i\n", digits);
- char tab[digits+1];
- snprintf(tab, sizeof(tab), "%f", pow(test,d));
- printf("result = %s\n", tab);
- //test = fmod(tmp_pow, n);
- int i=0;
- int ans=0;
- for(i=0; i<digits; i++)
- {
- ans=(ans*10 +(int)(tab[i])-48)%n;
- printf("%i\n", ans);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement