PHP / Javascript / JQuery - кодировка sha646 base64 - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь перенести пример PHP интеграции API в Javascript / JQuery.В PHP зашифрованная строка создается с использованием следующего кода:

$sig = base64_encode(hash_hmac('sha256', $sign, $this->secretAccessKey, true)

, функции которого описаны здесь:

http://php.net/manual/en/function.hash-hmac.php

http://us.php.net/base64_encode

В Javascript я использую криптографию JQuery для выполнения части HMAC:

http://code.google.com/p/crypto-js/#HMAC-SHA256

и пытаюсь выяснить, нужно ли мне также выполнять кодирование base64, так как кажется, что оно ужев base64.Это код, который я сейчас использую:

var sigHash = Crypto.HMAC(Crypto.SHA256, sign, accessKey);

Это правильно?Как бы я создал javascript / jquery эквивалент вышеупомянутой функции PHP?

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

HMAC является стандартом. Так же как и SHA-256. Таким образом, их результаты, независимо от того, какая реализация, должна быть одинаковыми.

В кодировке Base64 могут быть только различия. Обычно не алфавитно-цифровыми символами являются + и /, но вы не можете рассчитывать на это. Я проверил, и обе реализации используют одинаковые не буквенно-цифровые символы.

Однако вы все равно должны «вручную» проверить несколько тысяч строк. Реализация в PHP хорошо протестирована. Но я не знаю, верно ли то же самое для реализации в jQuery ...

Синтаксис для кодированного вывода Base64:

Crypto.util.bytesToBase64(
    Crypto.HMAC(Crypto.SHA256, sign, accessKey, { asBytes: true })
);
1 голос
/ 27 октября 2011

Если вам когда-нибудь понадобится вдохновение для реализации PHP-функции JS, загляните на PHPJS.org.Эквивалент JavaScript для base64_encode можно найти по адресу: base64_encode .

...