Если судить по документации, то hash_equals не то же самое, что ===, чтобы избежать атаки по времени. Можно почитать сорс, чтобы увидеть, что там есть дополнительная внутренняя логика.
Растолкуйте пожалуйста, как это вообще связано или полезно?
У нас же ведь по факту в функцию попадают два значения для сравнения, что ещё можно с ними сделать полезного, кроме, как просто сравнить?
Как мы что-то узнаем про злоумшленика и украденный ключ, если этих данных нет со стороны клиента, а лишь строка с паролем.
И опять же, там есть сравнение на строковой это тип данных или нет, даже, если не строковой, а чисто цифры, нам же сравнение вернет false из-за несовпадения пароля.
MrAnderson1999, код проверки чувствительных данных должен быть устойчив к реверс-инжинирингу и брутфорсу, поэтому лучше использовать криптографические функции там, где они уже предусмотрены языкоми и общепринятыми практиками. Для очень простых задач или задач, несвязанных с важными данными она может быть не нужна. Лично в своей практике я ее не использовала (не было задач для контекста).