Classe de Criptografia com método reverso
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:
Exemplo:
Saída:
Criptografia: cale6c3fgEf.o7fr70rx1f faieaae8dd22p3cfm8eea8tadip2b 84o
Reversa: Exemplo de criptografia.
Download com exemplo
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>"; ?>
Criptografia: cale6c3fgEf.o7fr70rx1f faieaae8dd22p3cfm8eea8tadip2b 84o
Reversa: Exemplo de criptografia.
Download com exemplo