我有一段已经在我的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');
};
然而,我遇到了以下错误:
我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。
这些代码片段是否执行相同的操作?我是否漏掉了什么?
crypto.createHash
方法不需要密钥,因为它计算的是哈希值而不是HMAC。 - ChriscreateHmac
会解决这个问题吗? - Sara Fuerst