Encriptar y desencriptar información

La información es muy valiosa y en algunos casos puede motivar a personas a intentar hackear tu servidor o aplicación, para poder robarla. Una práctica común y muy necesaria hoy en dia, es añadir una capa de seguridad para esta información, encriptando los datos más importantes, haciéndolos inútil para cualquier persona que logre robarla.

Como encriptar información usando PHP

Vamos a trabajar con la extensión mcrypt que viene incluida en PHP y además soporta varios algoritmos de encriptación. Para simplificar todo he creado un archivo genérico que puedes usar en tus programas.

Primero crea un archivo llamado mcript.php en tu servidor con este código:

<?php

//Configuración del algoritmo de encriptación
$algorithm = MCRYPT_BLOWFISH;
//Debes cambiar esta cadena, debe ser larga y unica
//nadie mas debe conocerla
$key  = 'Una cadena, muy, muy larga para mejorar la encriptacion';
$mode = MCRYPT_MODE_CBC;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode),
                       MCRYPT_DEV_URANDOM);

 /*
 Encripta el contenido de la variable, enviada como parametro.
  */
 $encriptar = function ($valor) use ($algorithm, $key, $mode, $iv)
 {
  $encrypted_data = mcrypt_encrypt( $algorithm, $key, $valor, $mode, $iv);
  return base64_encode($encrypted_data);
 };

 /*
 Desencripta el texto recibido
 */
 $desencriptar = function ($valor) use($algorithm, $key, $mode, $iv)
 {
  $encrypted_data = base64_decode($valor);
  return mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
 };

?>

No olvides cambiar el texto en la variable $key. En el código anterior está toda la configuración para que puedas encriptar o desencriptar cualquier variable, también hay dos funciones que puedes usar para encriptar y desencriptar respectivamente. Aquí hay un ejemplo de cómo puedes usarlas, solo crea un archivo con este código:

<?php

include "mcript.php";

// Como usar las funciones para encriptar y desencriptar.
$dato = "Esta es información importante";

//Encripta información:
$dato_encriptado = $encriptar($dato);

//Desencripta información:
$dato_desencriptado = $desencriptar($dato_encriptado);

echo 'Dato encriptado: '. $dato_encriptado . '<br>';
echo 'Dato desencriptado: '. $dato_desencriptado . '<br>';

 ?>

Puedes usar las funciones $encriptar() y $encriptar. Si te preguntas por que las funciones parecen ser variables y llevan un signo de $… bueno esto es por que las declare como funciones anónimas, actualmente esta es la mejor práctica para compartir variables entre dos funciones, sin tener que recibirlas como parámetros o crear una clase. De esta forma no necesitas enviar en cada función los datos de encriptación.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *