PHP / Javascript / JQuery – base64 sha256编码
我正在尝试将API集成的PHP示例移植到Javascript / JQuery。 在PHP中,使用以下代码创建加密字符串:
$sig = base64_encode(hash_hmac('sha256', $sign, $this->secretAccessKey, true)
其function记录在这里:
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);
它是否正确? 如何创建与上述PHP函数等效的javascript / jquery?
HMAC是一个标准。 SHA-256也是如此。 因此,无论哪种实施方式,其输出都必须相同。
Base64编码只能存在差异。 通常,非字母数字字符是+
和/
,但您不能指望它。 我已经检查过,两个实现都使用相同的非字母数字字符。
但是,您仍应“手动”检查几千个字符串。 PHP中的实现经过了很好的测试。 但我不知道jQuery中的实现是否也是如此…
Base64编码输出的语法是:
Crypto.util.bytesToBase64( Crypto.HMAC(Crypto.SHA256, sign, accessKey, { asBytes: true }) );
如果您需要获得PHP函数的JS实现的灵感,请查看PHPJS.org。 base64_encode
的JavaScript等价物可以在: base64_encode找到。