Criptografia RSA em PHP em poucas linhas – the simple way
filed in php on Jul.22, 2009
Abaixo descrevo os passos para implantar um sistema de chaves baseada em RSA,para que sua aplicação posso trocar dados de forma transparente.
Utilizei o procedimento para assinar um cookie, na máquina do usuário e depois validá-lo, em um sistema de auto-login.
Você vai precisar do arquivo RSA.php, disponível em http://scripts.ringsworld.com/development-tools/rsa1.3/:
Após isso, vamos passar por tres etapas, a geração das chaves, a assinatura dos dados, e por úlitmo a decodificação dos dados assinados.
Para gerar um par de chaves, e encriptar e decriptar os dados, usaremos o bloco de código abaixo comentado como exemplo.
<?php
require_once ‘RSA.php’;
//Iremos ter em $keys, um par de chaves, a pública e a privada,a
//a qual você deverá guardar para poder decriptar os dados mais tarde.
$keys = generate_keys ();
//com a chave sgerada iremos assinar uma string com a
//chave pública para futura comparação
$string_secreta = "Minha informação sigilosa";
$encoded = rsa_encrypt ($string_secreta, $keys[1], $keys[0]);
//OK, nossa ‘informação sigilosa’ esta agora encriptada,
//e pode ser distribuida,porem apenas quem tiver o valor de $keys
//poderá ver o conteudo, entao é importante manter a chave geradada
//em um local seguro
//Podemos agora decriptar o valor,
//e verificar se tudo ocorreu certinho:
$decoded = rsa_decrypt($encoded, $keys[2], $keys[0]);
$result = ($decoded === $message);
//$result será um boolean onde se a mensagem
//decodifica foi igual a mensagem original
// retornará true } else { retornará false; }
Abraços