emmgfx

Encriptar y desencriptar cadena con PHP

Cualquier programador Web ha podido necesitar pasar datos por $_GET – en la url – , es una forma fácil y cómoda de pasar valores de una página a otra, pero… en algunos casos puede no ser recomendable y habría que tener un mínimo de precaución, y para estos casos – y otros muchos – se puede utilizar esta clase que un día vi – no se donde, si lo supiese pondría la fuente – y sobre la que me veo obligado a escribir, mas que nada para tenerla presente yo mismo y darla a conocer a quien pueda necesitarla.

Ya de paso, esto puede servirnos en algún que otro caso para evitar inyecciones SQL, y así evitar que alguien nos mangonee lo que no debe.

Primero: Encriptar

function encrypt($string, $key) {
   $result = '';
   for($i=0; $i<strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)+ord($keychar));
      $result.=$char;
   }
   return base64_encode($result);
}

Se utiliza un código secreto, que es el que se pone en $key y que cuando desencriptemos necesitaremos saberlo para que lo haga correctamente.

Para encriptar una cadena escribimos

$cadena_encriptada = encrypt("LA CADENA A ENCRIPTAR","LA CLAVE");

Segundo: Desencriptar

function decrypt($string, $key) {
   $result = '';
   $string = base64_decode($string);
   for($i=0; $i<strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)-ord($keychar));
      $result.=$char;
   }
   return $result;
}

Y para desencriptar la cadena escribimos

$cadena_desencriptada = decrypt("LA CADENA ENCRIPTADA","LA CLAVE QUE SE USÓ PARA ENCRIPTARLA");

Articulos relacionados

9 comentarios

jaime →
Comentado hace 2 años

buena, pero me gustaria sabe como se utiliza, al momento de hacer de presionanr un link con datos en el get. gracias…

Josep Viciana → http://www.emm-gfx.net
Comentado hace 2 años

Prueba a usar algo así, a ver si he entendido bien lo que quieres.

a href="index.php?cadena=< ?=encrypt('cadena','semilla')?>
Manuel →
Comentado hace 2 años

Buenisima utilidad! os felicito!

Simio →
Comentado hace 8 meses

Gracias por la función, me ha sido bastante útil!

meisok → http://jandl.es
Comentado hace 8 meses

Funciona a las mil maravillas, gracias por el curro ;)

Camilo → http://urepublicana.edu.co
Comentado hace 4 meses

Super! funciona perfecto Mil gracias! Dios lo bendiga

Juan Manuel Garcia Carmona →
Comentado hace 4 meses

Excelente!! Muchas gracias por el aporte, lo acabo de implementar :D .

sebastian rodriguez →
Comentado hace 3 meses

Muy bueno, justo lo que necesitaba. Gracias por el aporte..

Beto →
Comentado hace 3 semanas

Muy Bueno muchachos, justo lo que necesitaba, lo probé funciono perfecto, lo bueno es que cada uno le pone la palabra clave que quiere.
Muchas Gracias

Escribir un comentario