1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| //programme C pour mettre en uvre l'algorithme de cryptographie RSA
#include <stdio.h>
#include <string.h>
long power(long a, long b) { long r = 1, i; for (i = 1; i <= b; i++) r = r * a;
return r;
}
void main () {
long p, q, N, Z, D, E, i, j, n, z, d, e, count = 0, somme, k;
char s [25], ch [25], c [ 25];
long v [25], res;
printf ("Entrez deux nombres premiers:");
scanf ("% d% d", & p, & q);
n = p * q;
z = (p - 1) * (q - 1);
printf ("La valeur de n est% d", n);
printf ("La valeur de z est% d", z);
for ( i = p; i <= q; i + + ) {count = 0; for (j = 1; j <= z; j + +) {
if (i % j == 0 && z % j == 0) count + +;} if (count == 1) {d = i; break;}
}
printf ("La valeur de d est% d", d);
somme = 1 + z;
if (%somme d == 0) {e = somme / j, k = 1;}
else {k = 2, tandis que (somme (k *)% d = 0!) {k + +;} e = (somme * k) / j;}
printf ("La valeur e est% d", e);
printf ("Entrez la chaîne dans la capitale ::");
scanf ("% s", & s);
for (i = 0; s [i] = '\ 0';! i + +) v [i] = (s [i]) - 64;
printf ("La chaîne est% s", s);
printf ("La chaîne en nombre est \ n");
for (j = 0; i, j <; j + +) printf ("% d \ t" , v [j]); printf ("\ n");
for (j = 0; j <i, j + +) {res = puissance (v [j], e); c [j] = res n%;} printf ("Le texte crypté est \ n");
for (j = 0; j <i, j + +) printf ("% d \ t", c [j]); printf ("\ n");
for (i = 0; i <j; i + +) {ch [i] = c [j] + 64;}
for (j = 0; j <i, j + +) {res = puissance (c [j], d); v [ j] =% res n;} printf ("Le texte original est \ n");
for (j = 0; j <i, j + +) printf ("% d \ t", v [j]);
printf (" \ n ");
return 0;
} |