Кодирование Base64: три разных выхода от разных инструментов? - PullRequest
1 голос
/ 13 января 2012

Я пытаюсь проверить подпись OAuth, сгенерированную в коде, по отношению к «известному уважаемому источнику». Все мои шаги проверены на правильность, кроме последнего, в котором «строка базовой подписи» HMAC-SHA1 хешируется против секретного ключа, а затем кодируется base64.

Я подтвердил, что мое хеш-значение совпадает с ожидаемым алгоритмом. Затем я подтвердил, что кодирование base64 было таким же. Пытаясь определить причину сбоя моего кодирования, я хотел проверить используемый кодер.

Вот строка (хэш), закодированная в base64:

203ebb13a65cccaae5cb1b9d5af51fe41f534357

Вот кодирование base64, которое приводит к моему коду:

MjAzZWJiMTNhNjVjY2NhYWU1Y2IxYjlkNWFmNTFmZTQxZjUzNDM1Nw ==

Согласно http://www.motobit.com/util/base64-decoder-encoder.asp, это правильный результат:

Base64 1

Но, согласно http://www.online -convert.com / result / 096d7b00138f3726daee5f6ddb107a62 (с секретной и базовой строкой, а не с хешем), должна была быть выведена другая base64. Обратите внимание, что вывод хеша - мой правильный хэш, несмотря на разницу в base64:

Base64 1

Наконец, «официальный» тестер (http://hueniverse.com/oauth/guide/authentication/) выводит третий другой base64 из того же хеша:

Base64 1

Я понятия не имею, что я делаю неправильно, и тот факт, что эти инструменты выводят разные результаты, заставляет меня задуматься, существует ли на самом деле такая вещь, как кодирование base64 или они действительно используют разные алгоритмы? Возможно, тот факт, что это для OAuth, поможет вам определить ответ.

Спасибо за любые выводы от мудрых.

Ответы [ 2 ]

1 голос
/ 14 января 2012

Хорошо, в этом случае первый веб-сайт совершал ту же «ошибку», что и я (в моем случае это была ошибка, первый веб-сайт мог просто сделать необъявленное предположение).

Эта ошибка , интерпретируется ли хеш как строка (которая получает base64encoded) или как последовательность шестнадцатеричных значений, которые получают base64encoded . В первом случае результирующее кодирование на длиннее , чем исходная строка, тогда как во втором результирующее кодирование на короче , чем исходная строка. Это не только эмпирически верно, но и взаимосвязи показывают, что это одна из концепций, лежащих в основе стандарта.

Второй веб-сайт, работающий с (как указано) «шестнадцатеричными» данными, получил правильный ответ.

0 голосов
/ 13 июля 2018

Попробуйте проверить через https://base64 -encode.org На этом сайте вы можете конвертировать все типы изображений в строку Base64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...