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");
75 comentarios
No me funciona, tengo ese problema con la url del + y cuando hago una peticion con urlencode me salta:
Not Found
The requested URL /video/wsO3tcWthWDjmZ2SYamgaX3PwnGmxNa+mvCdldGi3J9nh4m4t6q/5oWEvnu4poLCtYSXnn6WiZXEmoPHfbWqdKPdpoM= was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Alguna solución en la que no se tenga que usar los caracteres como + ?
Hola, es un articulo muy antiguo, tiene ya 6 años. Seguro que encuentras mejores formas de hacer lo que aquí se propone.
Si quieres usar lo que proponía en su día, creo que en los 63 comentarios que acumula a día de hoy hay algunas respuestas que pueden servirte.
A mí lo primero que se me ocurre es que puedes codificar el valor en criptado en base64 para pasarlo por la url y luego decodificarlo antes de desencriptarlo.
Salud.
para JOSEP VICIANA Mira el código que propone el blog para encriptar y desencriptar se basa en —-base64—- entonces no es ningún aporte nuevo decir que—– “A mí lo primero que se me ocurre es que puedes codificar el valor en criptado en base64 para pasarlo por la url y luego decodificarlo antes de desencriptarlo.”
El articulo lo escribí yo : ) no quería aportar nada, pero gracias por el interés xD
buen aporte me funciono bien 😀
gracias
Me parece un aporte muy bueno. Lo guardo en favoritos.
Muchas gracias.
Muchas gracias… Excelente Aporte!!
Te agradezco mucho!
Gracias viejo!
Funciones sencillas pero eficaces!
muchas gracias funciono muy bien.
hey! MUCHAS muchas gracias, gran aporte.
Es halgo sencillo y muy bueno.
saludos desde colombia
Hola, muchas gracias, funciona a la perfección.
A mi me funciono muy bien y con un par de trucos añadidos, la encriptacion esta segura; lo tengo trabajando en una aplicacion real….. Noviembre 03 2017
Ademas que la encontre muy simple, con un poco de imaginacion salio muy bien.
Gracias
Buena, me ayudó