Ich habe Code, der in meiner PHP-App funktioniert. Im PHP melde ich die URL mit dem folgenden Code:Hash_hmac entspricht in Node.js
private static function __getHash($string)
{
return hash_hmac('sha1', $string, self::$__secretKey, true);
}
Ich bin versucht, die URL in der gleichen Art und Weise in einer Node.js Anwendung zu unterzeichnen. Das ist, was ich versuche:
S3.prototype.getHash = function(string){
var key = this.secret_key;
var hmac = crypto.createHash('sha1', key);
hmac.update(string);
return hmac.digest('binary');
};
Allerdings bin ich die folgende Fehlermeldung erhalten:
The request signature we calculated does not match the signature you provided. Check your key and signing method.
Haben diese Teile des Codes das gleiche tun? Fehle ich etwas?
Vergleichen Sie die Ausgaben der beiden Hashes, um zu sehen, ob sie das gleiche tun. – Brody
Für den Anfang nimmt die 'crypto.createHash' Methode in Node keinen Schlüssel, weil sie einen Hash berechnet, nicht einen HMAC. – Chris
@Chris, also würde das Ändern zu 'createHmac' theoretisch das Problem lösen? –