【发布时间】:2016-08-23 18:28:35
【问题描述】:
我有在我的 PHP 应用程序中运行的代码。在 PHP 中,我使用以下代码对 url 进行签名:
private static function __getHash($string)
{
return hash_hmac('sha1', $string, self::$__secretKey, true);
}
我正在尝试在 Node.js 应用程序中以相同的方式对 URL 进行签名。这就是我正在尝试的:
S3.prototype.getHash = function(string){
var key = this.secret_key;
var hmac = crypto.createHash('sha1', key);
hmac.update(string);
return hmac.digest('binary');
};
但是,我收到以下错误:
我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。
这些代码段做同样的事情吗?我错过了什么吗?
【问题讨论】:
-
比较两个哈希的输出,看看它们是否做同样的事情。
-
首先,Node 中的
crypto.createHash方法不使用密钥,因为它计算的是哈希而不是 HMAC。 -
@Chris,所以理论上,将其更改为
createHmac可以解决这个问题? -
@Brody,我正在尝试,但是我将 Eclipse 用于 PHP,将 netBeans 用于节点,虽然 netbeans 显示输出没有问题,但 Eclipse 并不喜欢所有特殊的字符
标签: javascript php node.js amazon-s3 sign