Hashing Passwords con php
Este artículo tiene más de un año de antigüedad, el contenido pudiera estar obsoleto.
Entendamos como funciona eso de hashing Passwords con php
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
password_hash
Como usar 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:
Espero que esto les sea de utilidad.
Lecturas recomendadas: