Cálculo da chave secreta do protocolo Diffie-Hellmann
Publicado por Reginaldo de Matias (última atualização em 13/01/2010)
[ Hits: 5.734 ]
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; }
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (11)