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");