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>

questionAnswers(1)

yourAnswerToTheQuestion