В настоящее время я пытаюсь реализовать часть аутентификации библиотеки, которую мы используем, но я наткнулся на странную проблему с подписями данных, вывод crypto.createHmac в NodeJS примерно в два раза меньше, чем у hash_hmac в PHP, и это единственная часть данных, которая отличается от PHP и NodeJS (и нам нужно использовать NodeJS здесь)NodeJS crypto.createHmac SHA256 не работает должным образом
Точный код, используемый для создания подписи в NodeJS есть
authorization["oauth_signature"] = crypto.createHmac('SHA256', process.env.SECRET).update(toSign).digest('base64');
И для PHP это
$authorization["oauth_signature"] = base64_encode(hash_hmac("SHA256", $signatureString . $signingKey, $secret));
Однако выход версии NodeJS является
7LkQP+qKR1gSdPq/AgH/3No3ps7EtZXnqwjivMixvM8=
И для PHP это
NmQ0MWIzYmJiMjI2YzFlMDhiYzY3NzVmMWY0MzEwNDlhNDU3NDI0ZGJlMzU3NjJhYmMwYjgwYzZjMDE4NDM4OA==
Который имеет более удвоит данные
Должен ли я использовать другую библиотеку для версии NodeJS, а не для сборки в одном? У нас есть наш NodeJS-сервер на Microsoft Azure, но не уверен, что это связано, но, по крайней мере, имеет смысл упомянуть.
Edit:
Я нашел этот вопрос, hash_hmac в PHP автоматически экспортирует свои данные как данные Hexidecimal, crypto.createHmac экспортирует свои данные в виде необработанных двоичных данных, которые я непосредственно преобразованы в base64, все, что мне нужно сделать сначала экспортировал данные в hex, а затем преобразовал их в base64.
Спасибо, я только что нашел это, по-видимому hash_hmac экспорта это данные автоматически, как данные Hexidecimal но версия NodeJS делает это в двоичные данные, которые я непосредственно преобразуется в base64, шаг в промежутке между его конвертированием в гексагон, сделал трюк. – zezioen