Недавно я работал над приложением PHP и сравнивал сохраненный в БД пароль (который был сгенерирован и сохранен в приложении C# с использованием sha512) в моем приложении PHP.
Как я вижу, я не мог сравнить пароль, используя base64 или даже с шестнадцатеричными значениями. Но затем я преобразовал их в десятичную и смог сравнить и оба пароля (входной и сохраненный).
Вот пример кода, который я использовал (оба содержат двоичный файл sha512 га sh):
$storedpass = $DBModel->password;
if (hexdec($passwordHash) === hexdec($storedpass)) {
return true;
}
Код вернул true таким образом;
Мой вопрос: их значения base64 не совпадают, их шестнадцатеричные не совпадают, но их десятичные значения одинаковы. Это правильный способ сравнения паролей? У меня тут какая-то уязвимость?