Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HJHESS

[Resolvido] Classe de Criptografia com método reverso

Recommended Posts

Classe de Criptografia com método reverso

 

Classe de criptografia em php que tem dois métodos básicos para criptografar uma informação e também para o método reverso.

 

 

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.

 

Link original: http://hudolfhess.com/blog/php/classe-de-criptografia-com-metodo-reverso/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.