Hashing Passwords con php

Angel Cruz
Angel Cruz

14 DE May DE 2020

Entendamos como funciona eso de hashing Passwords con php

Y U NO HASH PASSWORD?
Y U NO HASH PASSWORD?

Una de las formas más fáciles de crear un hash para las contraseñas usando php es md5 podemos ver en este ejemplo cómo implementarlo:

1md5('password');

Esto nos dara como resultado algo asi:

15f4dcc3b5aa765d61d8327deb882cf99

Pero, realmente esto no es muy efectivo.

Usando password_hash

Usando la documentación de php nos dice que para usar esta función debemos hacer lo siguiente:

1string password_hash ( string $password , integer $algo [, array $options] )

Algoritmos soportados

  • PASSWORD_DEFAULT

  • PASSWORD_BCRYPT

Opciones soportadas:

  • Salt

  • Cost

Como usar password_hash

Usando PASSWORD_DEFAULT

1password_hash('password', PASSWORD_DEFAULT);

Esto nos dara como resultado algo asi:

1$2y$10$hdbF9lyKu5sWphXMtDB46eAO0RNYYlSTufwqIvmC6AC7xhC27s2w.

Usando PASSWORD_BCRYPT

1echo password_hash('password', PASSWORD_BCRYPT);

Esto nos dara como resultado algo asi:

1$2y$10$U4cpa/joKALEIIZT72K.Ze7s4S2eXTxee4NpnoOgZEZuqwCo1ZCQK

Vamos un poco más allá...

Tomando en cuenta lo que nos dice la documentación aún podemos pasarle un tercer parámetro que será un array con ciertas caracteristicas:

1$options = [
2 'cost' => 11,
3 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
4];

Y nuestra pequeña función pasa a ser esto:

1echo password_hash('password', PASSWORD_BCRYPT, $options);

Esto nos dara como resultado algo asi:

1$2y$11$7.RPImGZC4gN/Tf5sInLGeOkqtUirnway.gOEacAdmlOFk.ipPL4m

Hay que tener en cuenta que la opción salt ya se encuentra deprecated en la version 7.0.0 de php por lo cual, recomiendan usar el salt que se genera por defecto.

Como podemos ver en los resultados de cada ejemplo hay ciertas cosas que siempre van a ser iguales (en el caso que no cambiemos el valor de cost) y esto lo podemos ver en la siguiente imagen:

Ejemplo de hash password con php
Ejemplo de hash password con php

Espero que esto les sea de utilidad.

Lecturas recomendadas:

http://php.net/manual/en/function.password-hash.php.

Te podrá interesar
Laravel Nightwatch es la nueva herramienta oficial de monitoreo de Laravel. Descubre cómo se compara frente a Sentry en esta guía completa y optimizada para SEO.
Descubre cómo aplicar diseño atómico en Laravel con Blade para crear interfaces escalables, limpias y reutilizables. ¡Guía paso a paso!
¡Descubre cómo Studio de WordPress revoluciona el desarrollo web! Descarga gratis y crea tus proyectos con facilidad. El futuro es ahora. ¡Haz clic para más información!

Made with ♥️ & 🧉 in Montevideo, Uruguay.

[AC].dev is not affiliated with Laravel or Laravel LLC. Laravel is a Trademark of Taylor Otwell.

Code highlighting provided by Torchlight.

We use cookies!

Hi, this website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it.