Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник PHP

hash_hmac

Вычисляет подпись данных с секретным ключом.

Синтаксис

hash_hmac(string $algo, string $data, string $key, bool $binary = false): string

Параметры

ПараметрТипОписание
$algostringАлгоритм, например `sha256`.
$datastringПодписываемые данные.
$keystringСекретный ключ.
$binaryboolНеобязательный. `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-токены и проверка входных данных.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.