2011-10-26 31 views
0

私は、Javascript/JQueryへのAPI統合のPHPの例を移植しようとしています。 JavaScriptでPHP/Javascript/JQuery - base64 sha256エンコーディング

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

http://us.php.net/base64_encode

を、私がjQueryの暗号を使用しています。その機能はここに記述されてい

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

:PHPでは、暗号化された文字列は、次のコードを使用して作成されますHMAC作品を作成してください:

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

と私はbase64でエンコードする必要があるかどうかを判断しようとしています。すでにbase64になっているようです。これは現在実行中のコードです:

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

これは間違いありませんか?上記のPHP関数に相当するJavaScript/jqueryをどのように作成すればよいですか?

答えて

2

HMACが標準です。 SHA-256もそうです。その結果、どの実装に関係なく、と同じでなければなりません。

Base64エンコーディングに違いがあります。通常、英数字以外の文字は+/ですが、それにはカウントできません。私はチェックして、両方の実装で同じ非英数字を使用します。

ただし、数千の文字列を「手動で」チェックする必要があります。 PHPでの実装は十分にテストされています。

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

ありがとう - 私は知っておくべきことだと思うが、PHP関数と同等のものを得るために暗号関数をjavascriptで実行するだけで十分であるか、暗号関数を実行する必要があるのか​​、さらにbase64_encode関数を追加する – mheavers

+0

関数の標準出力は、Base64ではなく16進数のエンコードです。 Base64エンコーディングについては、更新された回答を参照してください。 – Dennis

+0

ありがとう!それは役に立ちます。 – mheavers

1

あなたは、PHPの関数のJS実装のためのインスピレーションが必要な場合:同じはjQueryのでは実装のために真である場合しかし、私は、Base64でエンコードされた出力の構文は次のとおりです...

を知りませんPHPJS.orgをご覧ください。 base64_encodeのJavaScriptは、base64_encodeにあります。

+0

ありがとう – mheavers

関連する問題