Cálculo da chave secreta do protocolo Diffie-Hellmann
Publicado por Reginaldo de Matias (última atualização em 13/01/2010)
[ Hits: 5.998 ]
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.
/*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;
}
Faz um crash no Kernel do Linux
DoS criado em C para uso didáticos
Captura de Banners dos Serviços
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Servidor de DNS BIND Ubuntu server (1)
Podem me chamar de 1mbecil :) (4)
Tem como instalar o Untapped no Linux? (2)
diferença entre o Tor baixado pelo Gerenciador de Aplicativos e o Tor ... (3)









