Entendamos como funciona eso de hashing Passwords con php
Una de las formas mas faciles de crear un hash para las contraseñas usando php es md5
podemos ver en este ejemplo como implementarlo:
md5('password');
Esto nos dara como resultado algo asi: 5f4dcc3b5aa765d61d8327deb882cf99
Pero, realmente esto no es muy efectivo.
Usando password_hash
Usando la documentacion de php nos dice que para usar esta funcion debemos hacer lo siguiente:
string 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
password_hash('password', PASSWORD_DEFAULT);
Esto nos dara como resultado algo asi: $2y$10$hdbF9lyKu5sWphXMtDB46eAO0RNYYlSTufwqIvmC6AC7xhC27s2w.
Usando PASSWORD_BCRYPT
echo password_hash('password', PASSWORD_BCRYPT);
Esto nos dara como resultado algo asi: $2y$10$U4cpa/joKALEIIZT72K.Ze7s4S2eXTxee4NpnoOgZEZuqwCo1ZCQK
Vamos un poco mas alla...
Tomando en cuenta lo que nos dice la documentacion aun podemos pasarle un tercer parametro que sera un array
con ciertas caracteristicas:
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
Y nuestra pequeña funcion pasa a ser esto:
echo password_hash('password', PASSWORD_BCRYPT, $options);
Esto nos dara como resultado algo asi: $2y$11$7.RPImGZC4gN/Tf5sInLGeOkqtUirnway.gOEacAdmlOFk.ipPL4m
Hay que tener en cuenta que la opcion
salt
ya se encuentradeprecated
en la version 7.0.0 de php por lo cual, recomiendan usar elsalt
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: