hash_hmac
Вычисляет подпись данных с секретным ключом.
Синтаксис
hash_hmac(string $algo, string $data, string $key, bool $binary = false): stringПараметры
| Параметр | Тип | Описание |
|---|---|---|
| $algo | string | Алгоритм, например `sha256`. |
| $data | string | Подписываемые данные. |
| $key | string | Секретный ключ. |
| $binary | bool | Необязательный. `true` — вернуть байты. |
Возвращаемое значение
stringПодпись в шестнадцатеричном виде.
Примеры
Подпись и проверка:
<?php
$secret = 'my-secret-key';
$payload = '{"order":42}';
$signature = hash_hmac('sha256', $payload, $secret);
var_dump(hash_equals($signature, hash_hmac('sha256', $payload, $secret)));
var_dump(hash_equals($signature, hash_hmac('sha256', '{"order":43}', $secret)));Результат:
bool(true)
bool(false)Примечания
Так проверяют, что запрос от платёжной системы или другого сервиса не подделан. Подписи сравнивают только через hash_equals().
См. также
- hash — Возвращает хеш строки по выбранному алгоритму.
- hash_equals — Сравнивает две строки за одинаковое время.
- random_bytes — Возвращает случайные байты, пригодные для защиты.
В учебнике
- Безопасность — Основы безопасности сайта на PHP — XSS и экранирование, SQL-инъекции, хеширование паролей, CSRF-токены и проверка входных данных.