Para la clase de seguridad he tenido que progamar, una pequeña aplicacion para no tener que hacer los calculos a manita, al igual que el algoritmo extendido de euclides, esto es una pequeña impliemntacion de un encriptador y un desencriptador RSA muy sencillo para usarlo con numeros bajos
Esta aplicaicon esta pensada para ver como se ejecuta la exponencial discreta: (m^k) mod p . Esto se observa en la funcion crypt
#include
int main ()
{
short e[] = { 1, 1, 1, -1 }; //7
short d[] = { 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, -1 };//1783
int m1 = 722, m2 = 80;
int n = 2173;
printf (\"encriptam %d\\\\n\", m1);
int c = crypt (e, m1, n);
printf (\"desencriptam %d\\\\n\\\\n\", c);
decrypt (d, c, n);
printf (\"encriptam %d\\\\n\", m2);
c = crypt (e, m2, n);
printf (\"desencriptam %d\\\\n\", c);
decrypt (d, c, n);
}
int decrypt (short vector[], int missatge, int modul)
{
printf (\"\\\\tC\\\\t\\\\ti\\\\n\");
int c = 1;
int i;
for (i = 0; vector[i] != -1; i++)
{
c = (c * c) % modul;
if (vector[i] == 1)
{
c = (c * missatge) % modul;
printf (\"\\\\t%d\\\\n\", c);
}
printf (\"\\\\t%d\\\\t\\\\t%hd\\\\n\", c, vector[i]);
}
return c;
}
int
crypt (short vector[], int missatge, int modul)
{
printf (\"\\\\tC\\\\t\\\\ti\\\\n\");
int c = 1;
int i;
for (i = 0; vector[i] != -1; i++)
{
if (vector[i] == 1)
{
c = (c * c) % modul;
printf (\"\\\\t%d\\\\n\", c);
}
c = (c * missatge) % modul;
printf (\"\\\\t%d\\\\t\\\\t%hd\\\\n\", c, vector[i]);
}
return c;
}