+1

Classe de Criptografia com método reverso

criado por Hudolf Hess em 30/09/2010 2:18pm
Criptografia utilizando PHP

Durante muito tempo, utilizava apenas md5 e sha1 quando precisava deixar alguma informação de forma que ninguém pudesse saber o que era, porém eram irrecuperáveis quando o usuário esquecesse e eu não poderia mostrar esta informação na tela.
Depois de um tempo, em uma aula de Matemática (Matemática Discreta) descobri como poderia criptografar informações e quando fosse necessário, exibi-la de forma clara para o usuário utilizando a criptografia reversa.
O método que irei explicar em seguida é simples, porém para que alguém possa reverter a criptografia será necessário saber a chave numérica necessária e também algumas outras informações usada para substituir o espaço, a vírgula e o ponto (usei apenas estes três pois é um pequeno exemplo).
Definições:
“Criptografia é a ciência e arte de escrever mensagens em forma cifrada ou em código. É parte de um campo de estudos que trata das comunicações secretas.” (HTML Staff).
“Congruência é uma definição geométrica. Temos que dois triângulos são congruentes: Quando seus elementos (lados e ângulos) determinam a congruência entre os triângulos. Quando dois triângulos determinam a congruência entre seus elementos.” (Wikipedia).
Bom, olhando a definição de congruência tem-se a impressão de que ela não tem utilidade para criptografar informações, porém, é exatamente com este método que faremos esta tarefa.
Básico de congruência: a é congruente a b módulo m:

Classe PHP:
<?php
/**
* MyCripty - classe para criptografar e reverter a criptografia de forma fácil, simples e segura utilizando PHP.
*
* @author Hudolf Jorge Hess
* @version 1.0b
* @link www.hudolfhess.com
*/

class MyCripty {

    /**
    * @var int
    */
    public $chave = 3;

    /**
    * @var string
    */
    public $add_text = "texto adicional aqui";

    /**
    * @param string Palavra
    * @return string
    */
    function enc($word){
       $word .= $this->add_text;
       $s = strlen($word)+1;
       $nw = "";
       $n = $this->chave;
       for ($x = 1; $x < $s; $x++){
           $m = $x*$n;
           if ($m > $s){
               $nindex = $m % $s;
           }
           else if ($m < $s){
               $nindex = $m;
           }
           if ($m % $s == 0){
               $nindex = $x;
           }
           $nw = $nw.$word[$nindex-1];
       }
       return $nw;
    }

    /**
    * @param string Palavra
    * @return string
    */
    function dec($word){
       $s = strlen($word)+1;
       $nw = "";
       $n = $this->chave;
       for ($y = 1; $y < $s; $y++){
           $m = $y*$n;
           if ($m % $s == 1){
               $n = $y;
               break;
           }
       }
       for ($x = 1; $x < $s; $x++){
           $m = $x*$n;
           if ($m > $s){
               $nindex = $m % $s;
           }
           else if ($m < $s){
               $nindex = $m;
           }
           if ($m % $s == 0){
               $nindex = $x;
           }
           $nw = $nw.$word[$nindex-1];
       }
       $t = strlen($nw) - strlen($this->add_text);
       return substr($nw, 0, $t);
    }

}
?>

Exemplo:
<?php
require "php/MyCripty.class.php";

//Instanciando classe
$mc = new MyCripty();
//Definindo um número chave, importante colocar sempre um número PRIMO maior que 3
$mc -> chave = 97;
//Texto chave para dificultar a decriptografia, pois além de precisar da chave, precisa também do texto chave.
$mc -> add_text = md5(sha1("texto chave aqui"));
//Texto a ser criptogrfado
$enc = $mc -> enc("Exemplo de criptografia.");
//Revertendo o processo da criptografia
$dec = $mc -> dec($enc);
//Saída HTML
echo "<p>Criptografia: $enc</p>
        <p>Reversa: $dec</p>";
?>
Saída:
Criptografia: cale6c3fgEf.o7fr70rx1f faieaae8dd22p3cfm8eea8tadip2b 84o
Reversa: Exemplo de criptografia.

Download com exemplo

Comentários:

Mostrando 1 - 1 de 1 comentários
Aonde está o link para Download?
01/06/2015 9:06am (~9 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)