Алгоритм SHA1 base64 в JavaScript и C#

Я запускаю некоторые тесты, сравнивающие sha1 алгоритм, реализованный в JavaScript - полученный из http://pajhome.org.uk/crypt/ - с его реализацией в C#.

Используя C# для получения хеша для {'метод':'people.get'} я использую этот оператор:

Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes("{'method':'people.get'}")));

который дает мне Qy95a0ShZqhbNdt6IF8qNf72jX0=

В JavaScript я получаю почти то же: Qy95a0ShZqhbNdt6IF8qNf72jX0 использование оператора:

b64_sha1("{'method':'people.get'}");

В случае JavaScript хеш не заканчивается равным (=) знак.

Это различие может вызвать меня проблемы в аутентификации против сервера?

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

Спасибо

5
задан Andres 17 March 2010 в 12:46
поделиться

2 ответа

Это зависит от приемника, но попробуйте декодировать результат из javascript с помощью C#, и вы получите исключение. Знак = используется для того, чтобы привести результат к нужной длине.

http://en.wikipedia.org/wiki/Base64

5
ответ дан 14 December 2019 в 01:05
поделиться

В sha1.js из либы, о которой я упоминал в своем вопросе, есть глобальная переменная b64pad, используемая для создания прокладок. По умолчанию ее значение равно "". Изменение на "="" дает точный хэш, считанный API C#

4
ответ дан 14 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: