#php #encryption #payload
#php #шифрование #полезная нагрузка
Вопрос:
Я интегрирую Transak на наш веб-сайт WordPress. Интеграция Transak завершена, но мы сталкиваемся с проблемой дешифрования полезной нагрузки webhook, отправляемой transak
Transak говорит: «Мы отправляем полезную нагрузку webhook в зашифрованном формате. Вы должны расшифровать его с помощью вашего API_SECRET. «
Расшифрованный Transak ответ webhook выглядит следующим образом:
{body:eyJhbGciOiJIUzI1NiJ9.eyJ3ZWJob29rRGF0YSI6eyJpZCI6IjkxNTFmYWExLWU2OWItNGEzNi1iOTU5LTNjNGY4OTRhZmI2OCIsIndhbGxldEFkZHJlc3MiOiIweDg2MzQ5MDIwZTkzOTRiMkJFMWIxMjYyNTMxQjBDMzMzNWZjMzJGMjAiLCJjcmVhdGVkQXQiOiIyMDIwLTAyLTE3VDAxOjU1OjA1LjA5NVoiLCJzdGF0dXMiOiJBV0FJVElOR19QQVlNRU5UX0ZST01fVVNFUiIsImZpYXRDdXJyZW5jeSI6IklOUiIsInVzZXJJZCI6IjY1MzE3MTMxLWNkOTUtNDE5YS1hNTBjLTc0N2QxNDJmODNlOSIsImNyeXB0b0N1cnJlbmN5IjoiQ0RBSSIsImlzQnV5T3JTZWxsIjoiQlVZIiwiZmlhdEFtb3VudCI6MTExMCwiZnJvbVdhbGxldEFkZHJlc3MiOiIweDA4NWVlNjcxMzJlYzQyOTdiODVlZDVkMWI0YzY1NDI0ZDM2ZmRhN2QiLCJ3YWxsZXRMaW5rIjoiaHR0cHM6Ly9yaW5rZWJ5LmV0aGVyc2Nhbi5pby9hZGRyZXNzLzB4ODYzNDkwMjBlOTM5NGIyQkUxYjEyNjI1MzFCMEMzMzM1ZmMzMkYyMCN0b2tlbnR4bnMiLCJhbW91bnRQYWlkIjowLCJwYXJ0bmVyT3JkZXJJZCI6IjIxODM3MjE4OTMiLCJwYXJ0bmVyQ3VzdG9tZXJJZCI6IjIxODM3MjE4OTMiLCJyZWRpcmVjdFVSTCI6Imh0dHBzOi8vZ29vZ2xlLmNvbSIsImNvbnZlcnNpb25QcmljZSI6MC42NjM4NDcxNjQzNjg2MDYsImNyeXB0b0Ftb3VudCI6NzMxLjM0LCJ0b3RhbEZlZSI6NS41MjY1Mjc2NDMzNjg2NCwiYXV0b0V4cGlyZXNBdCI6IjIwMjAtMDItMTZU
MTk6NTU6MDUtMDc6MDAiLCJyZWZlcmVuY2VDb2RlIjoyMjYwNTZ9LCJldmVudElEIjoiT1JERVJfQ1JFQVRFRCIsImNyZWF0ZWRBdCI6IjIwMjAtMTAtMTRUMTg6MDA6MDguOTcwWiJ9.abKj3GaKxB46V5MGQf0ouvo_bAx0FbHF84MdrPoE9sk}
У меня есть API_SECRET, но как я расшифровываю полезную нагрузку в PHP?
Я попробовал приведенный ниже код, клонируя библиотеку, указанную в комментарии ниже, но столкнулся с ошибками. Что-то не так с кодом?
require_once 'php-jwt/src/JWT.php';
use FirebaseJWTJWT;
$key = "eyJhbG.....7PENIpC-E";
$payload = "eyJhbGc...FbHF84MdrPoE9sk";
$jwt = JWT::encode($payload, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
Комментарии:
1.Описано здесь . В качестве альтернативы вы можете ввести JWT eyJh …E9sk здесь в поле Encoded. Ключ нужен только в том случае, если вы хотите проверить подлинность.
2. Спасибо @Topaco за руководство по первоначальным шагам. можете ли вы направить меня дальше? пожалуйста, проверьте обновленный вопрос
3. Для декодирования JWT требуется только
JWT::decode()
вызов.$jwt
содержит JWT ( eyJh …E9sk ),$key
ключ (HS256
поскольку алгоритм в порядке). Если это не сработает, возможно, key и JWT не совпадают. В описании firebase / jwt вы найдете пример HS256, который одновременно кодирует и декодирует.