Cálculo da chave secreta do protocolo Diffie-Hellmann

Publicado por Reginaldo de Matias (última atualização em 13/01/2010)

[ Hits: 5.696 ]

Homepage: http://mundodacomputacaointegral.blogspot.com/

Download protocoloDiffieHellman.c




O presente programa escrito em C, calcula a chave secreta do protocolo Diffie-Hellmann.

Explicação:

- Alice escolhe um valor para x
- Bob escolhe um valor para y
- Alice envia a mensagem para Bob: (n,g, g^x mod n)
- Bob envia a mensagem para Alice: (g^y mod n)
- Alice calcula (g^y mod n)^x mod n = g^x*y mod n
- Bob calcula (g^x mod n)^x mod n = g^x*y mod n

Assim obtém-se a chave secreta compartilhada.

  



Esconder código-fonte

/*Este pequeno programa faz o cálculo do protocolo Diffie-Hellmann
 Alice escolhe um valor para x
 Bob escolhe um valor para y
 Alice envia a mensagem para Bob: (n,g, g^x mod n)
 Bob envia a mensagem para Alice: (g^y mod n)
 Alice calcula (g^y mod n)^x mod n = g^x*y mod n
 Bob calcula (g^x mod n)^x mod n = g^x*y mod n
Assim obtém a chave secreta compartilhada

Autor: Reginaldo de Matias
Disciplina: Segurança em Redes - UDESC

Exemplo de teste - exercício
n=59 p=14 x=2 e y=5
chave secreta=46
compilar: gcc protocoloDiffieHellman -o dh -lm
executar: ./dh
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
  int n,g,x,y, gx, gy, GX,GY,mdgx,mdgy,mdgx2,mdgy2, chave_secreta;
  printf("Protocolo Diffie-Hellmann\n\n");
  printf("Digite um valor para x:");
  scanf("%i", &x);
  printf("Digite um valor para y:");
  scanf("%i", &y);
  printf("Digite um valor para n:");
  scanf("%i", &n);
  printf("Digite um valor para g: ");
  scanf("%i", &g);
  printf("(%i,%i, %i^%i mod %i)", n, g, g,x,n);
  /*inicio do cálculo do protoloco Diffie-Hellmann*/
  gx = pow(g,x); //gx = g^x
  gy = pow(g,y); //gy = g^y
  
  mdgx = gx%n; //gx = g^x mod n
  mdgy = gy%n; //gy = g^y mod n
 
  mdgx2 = pow(mdgx,y); 
  mdgy2 = pow(mdgy,x); 

  GX = mdgx2%n; //(g^x mod n)^y mod n
  GY = mdgy2%n; //(g^y mod n)^x mod n
  
  chave_secreta=GX;
  printf("GX= %i e GY=%i\n", GX, GY);
  printf("\nPortanto a chave segreta eh: %i\n", chave_secreta);

return 0;
}


Scripts recomendados

Cifra de Cesar - Cripto-Analise

Criptografar um Arquivo de Texto por cifra de Transposição

txt 2 pdf

USER ID (verificador)

Criptografia rot13


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts