PHP / Javascript / JQuery – кодировка base64 sha256

Я пытаюсь передать 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?

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

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

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

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

 Crypto.util.bytesToBase64( Crypto.HMAC(Crypto.SHA256, sign, accessKey, { asBytes: true }) ); 

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