Comparación de funciones hash () vs. crypt ()
Actualmente estoy implementando un sistema de inicio de sesión. Quiero almacenar la contraseña y el salt en una base de datos. Ahora me enteré de que hay unahash()
y uncrypt()
Función que parece hacer lo mismo (válida para SHA512).
hash()
es más nuevo y parece soportar más algoritmos de hashing quecrypt()
. ¿O hay alguna otra diferencia que debería saber / preocuparme?
Editar:
<code>function generatePasswordHash($password){ $salt = base64_encode(mcrypt_create_iv(8)); $calculatedPasswordHash = crypt($password, ' y un' . $salt . '$'); return $calculatedPasswordHash; } </code>
El resultado se ve como y unQh6ByGJ9$zLn3yq62egvmc9D7SzA2u.
Aquí mi función de comprobación de contraseña:
<code>function checkLoginData($username, $password){ global $db; $sql = "SELECT * FROM users WHERE username = :username"; $result = $db->ExecuteQuery($sql, array("username"=>$username)); if(!empty($result)){ $result = $result[0]; $savedPasswordHash = $result['password']; $splitted = explode("$", $savedPasswordHash); $salt = $splitted[2]; $calculatedPasswordHash = crypt($password, ' y un' . $salt . '$'); if($savedPasswordHash === $calculatedPasswordHash){ return true; } } return false; } </code>