Hola Visitante

Autor Tema: Exponenciacial discreata: RSA  (Leído 1260 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Exponenciacial discreata: RSA
« en: Noviembre 01, 2011, 05:09:49 pm »
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


Código: (c) [Seleccionar]

#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;
}