PHP hash_hmac () двоичный вывод с crypto-js - PullRequest
0 голосов
/ 21 декабря 2018

Я разрабатываю проект с приложением (expo response native) и сервером Laravel 5.1, используя oauth2-server.
Теперь мне нужно отправить заголовок авторизации в формате

Mac id="access_token" ts="timestamp" nonce="random_string" mac="signature"

MyПроблема в том, что signature не совпадает с вычисленной подписью от oauth-сервера.Я также сравнил все необходимые части подписи (запрос URI, хост и порт).Они совпадают

Я пытаюсь сгенерировать закодированный base64 с crypto-js.Строка результата должна совпадать с результатом hash_hmac() в PHP.Ниже приведен пример

$phpString = base64_encode(
    hash_hmac(
        'sha256', 'ANY STRING', 'HMAC HASH KEY', true
    )
);
// Result: cOeqRLpcqCUyluyY/Y4yROM+5upAr0dFzrSLU/m8qhY=

В моем скрипте JS с crypto-js

import CryptoJS from 'crypto-js';
import Base64   from 'crypto-js/enc-base64';

const jsString = Base64.stringify(
    CryptoJS.HmacSHA256('ANY STRING', 'HMAC HASH KEY').toString(CryptoJS.enc.Hex)
);
// 70e7aa44ba5ca8253296ec98fd8e3244e33ee6ea40af4745ceb48b53f9bcaa16
// It is seems not a valid base64 string

Я также пытался с некоторыми другими сценариями, и он не работал

const jsString = CryptoJS.HmacSHA256('ANY STRING', 'HMAC HASH KEY').toString(CryptoJS.enc.Base64);
// cOeqRLpcqCUyluyY/Y4yROM+5upAr0dFzrSLU/m8qhY=

Два результата совершенно разные.Что я не так в сценарии JS?

...