PHP/Javascript/JQuery - base64 sha256 编码

标签 php javascript jquery sha256 hmac

我正在尝试将 API 集成的 PHP 示例移植到 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);

这是正确的吗?我如何创建与上述 ​​PHP 函数等效的 javascript/jquery?

最佳答案

HMAC 是一个标准。 SHA-256 也是如此。因此,无论哪种实现,它们的输出都必须相同。

仅在 Base64 编码方面存在差异。通常,非字母数字字符是 +/,但您不能指望它们。我已经检查过,两种实现都使用相同的非字母数字字符。

但是,您仍然应该“手动”检查几千个字符串。 PHP 中的实现经过了良好的测试。但我不知道在 jQuery 中的实现是否也是如此......

Base64 编码输出的语法是:

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

关于PHP/Javascript/JQuery - base64 sha256 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909288/

相关文章:

javascript - React 函数式无状态组件、PureComponent、Component;有什么区别,我们什么时候应该使用什么?

javascript - 将文本区域中的\n 替换为控制台中的 "invisible"换行符

php - MySQL:使用 while 循环链接未显示在正确的列中

php - 使用通配符清除 apcu

PHP 和 MySQL 基于时间的测验应用程序

javascript - 如何在jquery中右键单击添加dbclick()

javascript - 如何知道在 jquery 中选择了哪个单选按钮?

javascript - 使用 php 导航到不同的 html 页面

javascript - 使用JS从输入标签读取多个文件

php - 通过 PHP/PDO 从 MySQL 数据库中选择不同的行