Bienvenidos sean a este post, hoy veremos una funcion de PHP.
Esta funcion nos permite generar un hash de cadenas de texto en un solo sentido. Veamos su sintaxis:
crypt(texto, sal);
El primer argumento es el texto desde el cual crearemos el hash. El segundo parametro es la sal o salt para generar el codigo. A partir de la version 5.6 dejo de ser opcional y hoy devuelve un mensaje de advertencia. Antes los distintos tipos de encriptacion se determinaban durante la instalacion pero hoy en dia utiliza uno propio en caso de que el sistema carezca alguno. Para determinar a cada uno utiliza una constante donde si tiene el valor de 1 significa que lo posee habilitado. Para poder usarlo, en la opcion de sal debemos usarlo de una forma para que la funcion sepa cual debe usar. Para entenderlo vamos a analizar el siguiente ejemplo:
<?php
echo "Standard DES: ";
echo crypt('micontraseña','ct') . "\n";
echo "Extended DES: ";
echo crypt('micontraseña','_S4..contra') . "\n";
echo "Blowfish: ";
echo crypt('micontraseña','$2a$09$unejemploparasalarlo$') . "\n";
echo "SHA-256: ";
echo crypt('micontraseña','$5$rounds=5000$unejemploparasalarlo$')."\n";
echo "SHA-512: ";
echo crypt('micontraseña','$6$rounds=5000$unejemploparasalarlo$')."\n";
?>
Estos son distintos llamados a crypt pero para los distintos tipos de sal. Observen como se debe pasar este parametro para que la funcion detecte el tipo de hash que debe utilizar. Los casos mas simples son los de DES. Siendo el estandar donde solo tomamos dos caracteres del texto y el extendido un poco mas complejo. En blowfish podemos ver como se complico mas porque pasamos un inicio y el texto para generar la sal. Lo mismo ocurre con los siguientes, estos inician siempre de esa manera e ira seguido de un texto. El valor de rounds es el predeterminado, su valor minimo es de 1000 y el maximo es de 999999999. Con esto comentado, ejecutemos para ver su salida:
$ php crypt.php
Standard DES: ctkJGYWCtGLxk
Extended DES: _S4..contGfxVYV3DFdU
Blowfish: *0
SHA-256: $5$rounds=5000$unejemploparasal$0MVtd8UEjOZuCLUEDKv0JDaB0Q3bQhNJD806nx6yxR3
SHA-512: $6$rounds=5000$unejemploparasal$wMEsbLRdZbet.BsgH1g9BCKSMgZh.mXD.N35.JsMWKozw49c.P2pwpLvKKs9iQPVs0rGAOs0KNuGe0pc.iCIB0
$
En esta salida tenemos un caso donde fallo, por lo menos en mi equipo, y es blowfish porque devolvio *0 pero tambien puede devolver *1. Si bien fallo tambien puede suceder que no sea soportado por el equipo, para ello podriamos modificar el llamado a la funcion de la siguiente manera:
if (CRYPT_STD_DES == 1) {
echo "Standard DES: ";
echo crypt('micontraseña','ct') . "\n";
} else {
echo "DES no es soportado.\n";
}
Mediante un condicional verificamos si la constante que habilita al metodo para crear el hash esta habilitada. En caso de ser verdadero procede a ejecutarlo. En caso contrario, mostraremos una notificacion sobre que no lo soporta. Este es la base de una funcion que se utiliza mas como es password_hash pero esta sera tema para otro post.
En resumen, hoy hemos visto a crypt, para que sirve, como se utiliza, y un ejemplo practico parra verlo en accion. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
