lunes, 8 de julio de 2013

Encriptar y desencriptar cadena con PHP


¿Para que debemos encriptar las contraseñas?

Debemos encriptar las contraseñas de los usuarios para mantener o tratar por lo menos la seguridad de sus datos.
La gente tiene el hábito o mal hábito de usar la misma contraseña para todas sus cuentas, desde su cuenta en facebook hasta la de paypal o peor, la de su cuenta bancaria. Nuestra obligación es proteger ese dato fundamental por si desafortunadamente nuestra base de datos cae en las manos equivocadas, cómo las de un empleado mal intencionado o la de un hacker.


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

No hay comentarios:

Publicar un comentario

Ingresa tu comentario asertivo =)