Comunidad de diseño web y desarrollo en internet online

CLASE PHP QUE PERMITE ENCRIPTAR Y DESCENCRIPTAR.-

Citar            
MensajeEscrito el 10 Jul 2009 02:50 am
Muchas veces hemos querido encritar los datos que incrustamos en el html, como en el caso de ID o de validadores de registro.- Y hay muchas funciones que encriptan, pero no puede volver a saber el valor original Ej. MD5. Una de las que probe es base64_encode($tempInt), pero es muy fasil de desencriptar.-

Bueno les dejo mi funcion.-

Código :

// Copyright (c) 2009 By Jamm "Rpe-Scia"
## encript ID
class encript
{
//   var $characters2 = 'abcdefghijklmnñopqrstuvwxyz0123456789';
//   var $characters = '#%bc1de2f3gh/(j)kl6m7nñ8op9qr?tuv¡¿yz&';
   private static $charAllows = 'a0bc1de2f3gh4ij5kl6m7nñ8op9qrstuvwxyz ';
   private static $characters = 'a0bc1de2f3gh4ij5kl6m7nñ8op9qrstuvwx&yz';
   private static $num_encript;
   public static $string;
   public static function encode($inputVar, $num = 0)
   {
      self::$num_encript = $num;
      $len = strlen($inputVar);
      for($i=0 ; $i<strlen($inputVar); $i++)
      {
         self::addNum($len++);
         $position = strpos( self::$charAllows, strtolower($inputVar{$i}) );
         if(!is_int($position))
         {
            return 'Cadena ingresada con caracteres invalidos "'.$inputVar{$i}.'"';
         }
         $char = self::characters();
         $string .=  $char{$position};
      }
      return self::$string=$string;
   }
   public static function decode($inputVar, $num = 0)
   {
      self::$num_encript = $num;
      $len = strlen($inputVar);
      for($i=0 ; $i<strlen($inputVar); $i++)
      {
         self::addNum($len++);
         $position = strpos( self::characters(), strtolower($inputVar{$i}) );
         $char = self::$charAllows;
         $string .= $char{$position};
      }
      return self::$string=$string;
   }
   private static function addNum($len)
   {
      self::$num_encript = ( (self::$num_encript+($len)) - (int)(sqrt( $len * log(($len*4)-1) * log($len*10) )) );
   }
   private static function characters()
   {
      $num = self::$num_encript % (strlen(self::$characters)-1);
      return substr(self::$characters,$num).substr(self::$characters,0,$num);
   }
}


Para acceder dejo ejemplos:

Código :

$e = new encript;
echo $tem = $e->encode($_GET['v'],433);
echo encript::$string; // para volver a optener el valor
echo encript::decode($tem,433);
echo encript::$string; // para volver a optener el valor


EN este caso el numero 433 es el numero que debo utilizar para encriptar y desencriptar.- Pueden ingresar el numero que imaginen.-
Lo otro es que tambien pueden cambiar el orden de los caracteres de:
private static $characters = 'a0bc1de2f3gh4ij5kl6m7nñ8op9qrstuvwx&yz';

## Importante $charAllows y $characters deben tener la misma cantidad de caracteres.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie8
Citar            
MensajeEscrito el 10 Jul 2009 03:41 am
Observarcion:

private static $charAllows = 'a0bc1de2f3gh4ij5kl6m7nñ8op9qrstuvwxyz ';


son los caracteres permitidos. Osea la cadena a encriptar en este caso debe tener numero letras y/o espacios.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie8
Citar            
MensajeEscrito el 16 Jul 2009 02:57 am
El corazon de esta manera esta en la funcion

Código :

   private static function addNum($len)
   {
      self::$num_encript = ( (self::$num_encript+($len)) - (int)(sqrt( $len * log(($len*4)-1) * log($len*10) )) );
   }


Estube realizando una prueba y modifique la funcion por esta otra:

Código :

      self::$num_encript += ( (self::$num_encript+($len)) * (int)(sqrt( $len * log(($len*4)-1) * log($len*10) )) );


Esto hace que no se repitan conbinaciones de caracteres. Osea que con cada numero generado, como en el ejemplo "433" la cadena que retorne no se repita si se ingresa otro numero.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 22 Jul 2009 08:47 am
Un poco rara ¿Qué algoritmo usas para cifrar?

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox
Citar            
MensajeEscrito el 22 Jul 2009 11:45 pm
En base al largo del string y al numero ingresado, hace que los caracteres cambien su posicion, como si los caracteres formaran un circulo.-

Para probarlo cree:

Código :

$e = new encript;

for($i=0;$i<300000;$i++)
{
  $temp = $e->encode('prueba',$i);
  if(isset($arreglo[$temp])) break;
   $arreglo[$temp] = '';  
}

Esto lo que hace es ver si la funcion me retorna 2 cadenas identicas.-

Realiza las pruebas, funciona estupendo.-

Y como dije un poco mas arriba:

Código :

self::$num_encript += ( (self::$num_encript+($len)) * (int)(sqrt( $len * log(($len*4)-1) * log($len*10) )) );

Si cada persona modifica este algoritmo "" los caracteres toman otra posicion.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 24 Jul 2009 12:22 am
Dejo la clase actualizada.-

Código :

// Copyright (c) 2009 By Jamm "Rpe-Scia"
## encript ID
class encript
{
   private static $charAllows = 'a0bc1de2f3gh4ij5kl6m7nñ8op9qrstuvwxyz ';
   private static $characters = 'a0bc1de2f3gh4ij5kl6m7nñ8op9qrstuvwx&yz';
   private static $num_encript;
   public static $string;
   public static function encode($inputVar, $num = 0)
   {
      self::$num_encript = $num;
      $len = strlen($inputVar);
      for($i=0 ; $i<strlen($inputVar); $i++)
      {
         self::addNum($len++);
         $position = strpos( self::$charAllows, strtolower($inputVar{$i}) );
         if(!is_int($position))
         {
            return 'Cadena ingresada con caracteres invalidos "'.$inputVar{$i}.'"';
         }
         $char = self::characters();
         $string .=  $char{$position};
      }
      return self::$string=$string;
   }
   public static function decode($inputVar, $num = 0)
   {
      self::$num_encript = $num;
      $len = strlen($inputVar);
      for($i=0 ; $i<strlen($inputVar); $i++)
      {
         self::addNum($len++);
         $position = strpos( self::characters(), strtolower($inputVar{$i}) );
         $char = self::$charAllows;
         $string .= $char{$position};
      }
      return self::$string=$string;
   }
   private static function addNum($len)
   {
      $len = (strlen($len)<3)? (($len+2)*$len): $len ;
//      self::$num_encript +=  (int)(sqrt( self::$num_encript * log(( self::$num_encript*4)-1) * log( self::$num_encript*10) )) + (int)(sqrt( $len * log(($len*4)-1) * log($len*10) )) ;
//      self::$num_encript +=  ((int)(sqrt( self::$num_encript * log(sqrt(self::$num_encript)) * log(( self::$num_encript*4)-1) * log( self::$num_encript) )) * (int)(sqrt( $len * log(($len*4)-1) * log($len*10) ))*( sqrt(log(self::$num_encript)) )) ;
      self::$num_encript *=  ((int)( sqrt(log(self::$num_encript*($len)))) * (sqrt(log(($len) * (self::$num_encript+1))))  );
   }
   private static function characters()
   {
      $num = self::$num_encript % (strlen(self::$characters)-1);
      return substr(self::$characters,$num).substr(self::$characters,0,$num);
   }
}

Y para probarlo:

Código :

$e = new encript;
$var = array();
$i = 0;
while ($i <200000){
   $e->encode('julliol99oo',$i);
   if(isset($var[encript::$string])){ break;}
   $var[encript::$string] = $i ;
   $i++;
}
echo 'Inicio: '$var[encript::$string].'<br>';
echo 'fin: '$i.'<br>';

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.