Pular para o conteúdo

Geração de chaves Diffie-Hellman

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.
Perfil removido removido
Hits: 5.607 Categoria: PHP Subcategoria: Segurança
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download diffiehellman.php Enviar nova versão

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>";
?>

Sistema de Log

Script para gerar senhas aleatórias

Sistema de área restrista PHP/MYSQL

GMail Bomber

Encrypt / Decrypt string

#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

Entre na sua conta para comentar.