porównanie funkcji hash () vs. crypt ()
Obecnie wdrażam system logowania. Chcę zapisać hasło i sól w bazie danych. Teraz dowiedziałem się, że jesthash()
i acrypt()
funkcja, która wydaje się robić to samo (ważna dla SHA512).
hash()
jest nowszy i wydaje się, że obsługuje więcej haszujących algorytmów niżcrypt()
. Czy są jakieś inne różnice, o których powinienem wiedzieć / dbać?
Edytować:
<code>function generatePasswordHash($password){ $salt = base64_encode(mcrypt_create_iv(8)); $calculatedPasswordHash = crypt($password, ' i a' . $salt . '$'); return $calculatedPasswordHash; } </code>
Wynik wygląda tak i aQh6ByGJ9$zLn3yq62egvmc9D7SzA2u.
Tutaj moja funkcja sprawdzania hasł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, ' i a' . $salt . '$'); if($savedPasswordHash === $calculatedPasswordHash){ return true; } } return false; } </code>