Попытка цифровой подписи через HMAC-SHA1 с PHP
Я пытаюсь настроить некоторые действия API Карт Google Premier, и для этого мне нужно подписать свои URL-адреса для аутентификации. Если вы перейдете к примерам Signature, есть немного кода на Python, C # и Java, чтобы показать вам, как сделать подпись через HMAC-SHA1. Есть также пример, чтобы я мог проверить мою реализацию PHP. Тем не менее, я просто не могу заставить его работать.
Вот мой код:
$key = "vNIXE0xscrmjlyV-12Nj_BvUPaw=";
$data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID";
$my_sign = hash_hmac("sha1", $data, base64_decode($key));
$my_sign = base64_encode($my_sign);
$valid_sign = "KrU1TzVQM7Ur0i8i7K3huiw3MsA=";
Когда я запускаю это, я получаю подпись:
ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==
Который полностью не соответствует.
Вещи, о которых я думал:
Ключ находится в формате закодированного измененного URL, поэтому изменение-
а также_
в+
а также/
также не работаетПример кода Python действительно работает, так что это правильный пример.Полностью переписываем нашу кодовую базу на python вместо PHP (я унаследовал это).