Cálculo da chave secreta do protocolo Diffie-Hellmann
Publicado por Reginaldo de Matias (última atualização em 13/01/2010)
[ Hits: 6.012 ]
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;
}
Cifra de Cesar - Cripto-Analise
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
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
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Assisti Avatar 3: Fogo e Cinzas (3)
Conky, alerta de temperatura alta (8)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









