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 necesite encriptar y desencriptar una cadena con PHP.
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¨);