Geração de chaves Diffie-Hellman

Publicado por Perfil removido (última atualização em 24/09/2009)

[ Hits: 5.283 ]

Download diffiehellman.php




Este script é um exemplo em PHP que ilustra o artigo do Elgio - http://www.vivaolinux.com.br/artigo/Fundamentos-da-criptografia-assimetrica/

Ele está comentado, mas recomendo ler o artigo pois está bem didático.

A parte da geração de números primos eu ainda não implementei, usei os números que ele citou no artigo dele.

  



Esconder código-fonte

<?php
//
// para entender esse script leia o artigo sobre Fundamentos da Criptografia aqui no VOL
// http://www.vivaolinux.com.br/artigo/Fundamentos-da-criptografia-assimetrica/
//
// Desenvolvido por: Daniel Gianni
//

<?php

echo "<pre>";

$p = 131;  // 1o número primo
$e = 5;     // 2o número primo

$xf =31;   // número secreto (chave) do usuário F
$xc = 17; // número secreto (chave) do usuário C

printf( "p=%d   e=%d   xf=%d    xc=%d \n\n" , $p, $e, $xf, $xc ); 

$temp = bcpow($e,$xf); // e^xf
$yf = bcmod( $temp , $p ); // (e^xf) mod p 

// aqui temos o número (chave pública) a ser enviada ao usuário C pelo usuário F
printf( "e^xf => %d ^ %d = %d mod %d = %d \n\n" , $e, $xf, $temp, $p, $yf );

$temp = bcpow($e,$xc); // e^xc
$yc = bcmod( $temp , $p ); // (e^xc) mod p

// aqui temos o número (chave pública) a ser enviada ao usuário F pelo usuário C
printf( "e^xc => %d ^ %d = %d mod %d = %d \n\n" , $e, $xc, $temp, $p, $yc );

// aqui está a decodificação da chave para o usuário F e a decodificação da chave para o usuário C
printf( "kf = %d    kc = %d " , bcmod(bcpow($yc,$xf) , $p) , bcmod(bcpow($yf,$xc) , $p) );

echo "</pre>";
?>

Scripts recomendados

Cadastro utilizando a classe PDO com o método prepare()

Função Anti MySQL Injection - Proteja sua aplicação!

Geração de senhas e URL de vídeos Youtube e Vimeo

Encrypt / Decrypt string

Base64 encode e decode em PHP


  

Comentários
[1] Comentário enviado por removido em 28/06/2012 - 00:18h

$temp = bcpow($e,$xc); // e^xc
$yc = bcmod( $temp , $p ); // (e^xc) mod p

Essa potenciação poderia funcionar melhor se fosse tirado o módulo a cada operação.
Faria o valor de uma multiplicação nunca exceder e^2.
Inclusive há um método de multiplicação em módulo baseado em sistema binário que acelera em muito esse cálculo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts