Как рассчитать значение дайджеста шифрования hmax sha1 - PullRequest
0 голосов
/ 27 марта 2020

Привет мне нужно отправить данные на API с помощью Curl. Требуется значение дайджеста в заголовке запроса. Но я получаю ошибку несоответствия подписи в ответе Curl.

Вот шаги для создания значения дайджеста:

Для расчета значения дайджеста Пожалуйста, выполните следующие шаги:

1) Получить ключ hmac_sha1 из необработанных байтов ключа (Здесь необработанными байтами ключа будет Client_secret (будет передаваться по телефону)

2) Вычислить hma c в байтах полезной нагрузки

3) Шестнадцатеричное кодирование hma c (шестнадцатеричное кодирование вместо Base64, как указано в Примере) и возвращение полученной строки - DigestValue

4) Используемый алгоритм: HmacSHA1

Пожалуйста, обратитесь к примеру 50 по ссылке ниже для получения дополнительной справки: http://www.javatips.net/api/java.security.signatureexception

Шестнадцатеричное кодирование вместо Base64, как упомянуто в примере, здесь Client_secret будет использоваться вместо ключа, как указано в пример

Я пытался создать значение дайджеста, используя этот код:

$key=rrxfwr@*QB60rrxfwr@*QB60;
$client_secret='EghAfDrNv4RrGpRvbH1/00BGiC3vCP49cwVAEIzT7ob5JFiEQS5oMg==';
$pad=hash_hmac("sha1",$client_secret,true);
$digestvalue=bin2hex($pad);

1 Ответ

1 голос
/ 27 марта 2020

Согласно инструкции и вашему описанию, это должно быть так:

$key = 'rrxfwr@*QB60rrxfwr@*QB60';
$data = base64_decode('EghAfDrNv4RrGpRvbH1/00BGiC3vCP49cwVAEIzT7ob5JFiEQS5oMg==');
$pad = hash_hmac('sha1', $data, $key, true);
$digestvalue = bin2hex($pad);

Кажется, у вас были аргументы для $data и $key в обратном порядке.

...