martes, 5 de agosto de 2014

Encriptación y desencriptación PHP

Voy a dedicarle un post a este tema, ya que es de los más importantes en tema de programación segura, y es el tema de la encriptación de Datos.

Hay varios tipos de encriptación ya sean unidireccionales, que no se puede saber el valor de origen, como por ejemplo md5, sha1, y bidireccionales, que son los que pemiten volver a la cadena inicial a través del hash.
El hash es  la cadena encriptada.

El ejemplo que voy a poner ahora, es una clase que tras pasar un parámetro, lo encriptará o lo desencriptará dependiendo de la función que utilicemos.
Este ejemplo es del tipo bidireccional, ya que te permite encriptar la cadena y volver a su estado inicial.

<?php
/**
* Description of Encrypter
*
*/
class Encrypter {
 
    private static $Key = "daycry";
 
    public static function encrypt ($input) {
        $output = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(Encrypter::$Key), $input, MCRYPT_MODE_CBC, md5(md5(Encrypter::$Key))));
        return $output;
    }
 
    public static function decrypt ($input) {
        $output = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(Encrypter::$Key), base64_decode($input), MCRYPT_MODE_CBC, md5(md5(Encrypter::$Key))), "\0");
        return $output;
    }
 
}

$texto = "Texto a encriptar";
 
// Encriptamos el texto
$texto_encriptado = Encrypter::encrypt($texto);
 
// Desencriptamos el texto
$texto_original = Encrypter::decrypt($texto_encriptado);
 
if ($texto == $texto_original) echo 'Encriptación / Desencriptación realizada correctamente.';

Como podéis ver utiliza el módulo de mcrypt de PHP5 que debe de estar instalado, sino no funcionará este código.

No hay comentarios:

Publicar un comentario