Как заставить PHP создать строки HMAC-SHA1, такие как Objective-C?

StackOverflow https://stackoverflow.com/questions/4522581

  •  12-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь реализовать решение аутентификации с помощью PHP и Objective-C. Оба языка создают свои собственные кодированные строки HMAC-SHA1 с одним и тем же ключом и с одним и тем же секретом.

Видимо, они, кажется, отличаются по своему пути, как они это делают.

На стороне Objective-C я использую Oauthcustomer в качестве класса подписания, который создает правильную кодируемую строку:

/3n/d4sKN6k3I7nBm1qau59UukU=

На стороне PHP я использую встроенную функцию hash_hmac ('sha1', ...) с кодированием Base64, которая создает это:

ZmY3OWZmNzc4YjBhMzdhOTM3MjNiOWMxOWI1YTlhYmI5ZjU0YmE0NQ==

Тогда я попытался использовать другую функцию (упомянутая здесь) и это производит с кодированием BASE64 это:

NWY1ODUwOWE3NGI4NWU5ZTIxMDYzMTNmNzk3NTYxMDQ4OWE1MmUzNQ==

Я абсолютно понятия не имею, как я могу решить эту проблему, и я даже не знаю, почему это происходит.

Спасибо за помощь,

Павел

Это было полезно?

Решение

Хорошо, я добавлю искусственный ответ. (На Stackoverflow каждый вопрос должен быть украшен ответом.)

Хэш-функции в PHP в основном возвращают шестигранные строки, а не реальные данные. (Для любой причины). Обычно существует параметр функции, чтобы сделать его совместимым с тем, что ожидают другие реализации:

 hash_hmac("sha1", $data, $key, $raw_output=TRUE);

 md5($str, $raw_output=TRUE);

 hash("sha1", $data, $raw_output=TRUE);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top