strcmp vs. == vs. === в PHP для проверки равенства хешей

м используюcrypt() хэшировать пароли в PHP, и я пытаюсь выработать самый безопасный способ проверки равенства полученного хэша при выполнении проверки паролей.

Есть три варианта, которые я вижу:

Вариант 1 - Двойные Равные

function checkPassword($hash, $password)
{
    return crypt($password, $hash) == $hash;
}

Вариант 2 - Тройные Равные

function checkPassword($hash, $password)
{
    return crypt($password, $hash) === $hash;
}

Вариант 3 -strcmp()

function checkPassword($hash, $password)
{
    return strcmp(crypt($password, $hash), $hash) === 0;
}

Моя интуиция подсказывает мне, что вариант 1 - плохая идея из-за отсутствия проверки типов, и что варианты 2 или 3, вероятно, будут лучше. Тем не менее, я могуне работает, если естьэто особый случай, который=== или жеstrcmp потерпит неудачу под. Что наиболее безопасно для этой цели?

Ответы на вопрос(4)

Ваш ответ на вопрос