json — реализация контрольной суммы в веб-сервисах php

У меня есть php веб-сервисы для получения огромного количества данных в формате JSON. В настоящее время я использую количество отправленных данных и полученных данных для сравнения в случае успеха. Недавно я услышал метод, называемый контрольной суммой. Как я могу реализовать контрольную сумму в этом сценарии?

-1

Решение

Вы можете подписать полезную нагрузку с hash_hmac (), с известным ключом созданный токен будет передаваться через HTTP-заголовки.

Например:

<?php
// key which will sign the data
$key = hash('sha256', 'Unique user data or Some secret');

// your data
$array = [
'foobar' => 'baz'
];

// encode the payload
$json = json_encode($array);

// sign it with key
$token = hash_hmac('sha256', $json, $key);

// set response header
header('X-Checksum: '.$token);

echo $json;

Вот как получатель будет проверять полученные данные.

// faked: this would be populated by the request/response
$_POST['json'] = $json;
$_SERVER['X-Checksum'] = $token;

// verify the data matches token by signing the data with the key
$check = hash_hmac('sha256', $_POST['json'], $key);
if (hash_equals($token, $check)) {
echo 'Verified';
} else {
echo 'Tampered';
}

// example tampered data
$_POST['json'] = 'tampered'.$json;

$check = hash_hmac('sha256', $_POST['json'], $key);
if (hash_equals($token, $check)) {
echo 'Verified';
} else {
echo 'Tampered';
}

Смотрите это онлайн: https://3v4l.org/tvUUR

0

Другие решения

Других решений пока нет …