Cálculo da chave secreta do protocolo Diffie-Hellmann
Publicado por Reginaldo de Matias (última atualização em 13/01/2010)
[ Hits: 6.029 ]
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;
}
Spieluhr - esse código pode ser considerado um vírus?
Criptografar um Arquivo de Texto por cifra de Transposição
DoS criado em C para uso didáticos
Faz um crash no Kernel do Linux
Nenhum comentário foi encontrado.
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
Habilitando clipboard manager no ambiente COSMIC
A compatibilidade do LibreOffice com o Microsoft Office
Colocando hotcorner no COSMIC para exibir "workspaces"
Quais licenças open source têm valor jurídico? (2)
A fórmula da coca-cola foi decompilada e agora é opensource! (0)









