хэш ()vs. crypt ()сравнение функций

В настоящее время я внедряю систему входа в систему. Я хочу сохранить пароль и соль в базе данных. Теперь я узнал, что есть функции hash()и crypt(), которые, кажется, делают то же самое (, что и для SHA512 ).

hash()новее и, кажется, поддерживает больше алгоритмов хеширования, чем crypt(). Или есть какие-то другие различия, о которых я должен знать/заботиться?

Редактировать:

function generatePasswordHash($password){
    $salt = base64_encode(mcrypt_create_iv(8));
    $calculatedPasswordHash = crypt($password, '$1$'. $salt. '$');

    return $calculatedPasswordHash;
}

Результат выглядит так$1$Qh6ByGJ9$zLn3yq62egvmc9D7SzA2u.

Вот моя функция проверки пароля:

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, '$1$'. $salt. '$');

        if($savedPasswordHash === $calculatedPasswordHash){
            return true;
        }
    }

    return false;
}
13
задан testing 25 April 2012 в 09:16
поделиться