Versuche, mit PHP über HMAC-SHA1 digital zu signieren
Ich versuche, eine Google Maps Premier-API-Aktion einzurichten. Dazu muss ich meine URLs zur Authentifizierung signieren. Wenn Sie sich die Signaturbeispiele ansehen, finden Sie Python-, C # - und Java-Code, der Ihnen zeigt, wie Sie die Signatur über HMAC-SHA1 erstellen. Es gibt auch ein Beispiel, mit dem ich meine PHP-Implementierung testen kann. Ich kann es aber einfach nicht zum Laufen bringen.
Hier ist mein Code:
$key = "vNIXE0xscrmjlyV-12Nj_BvUPaw=";
$data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID";
$my_sign = hash_hmac("sha1", $data, base64_decode($key));
$my_sign = base64_encode($my_sign);
$valid_sign = "KrU1TzVQM7Ur0i8i7K3huiw3MsA=";
Wenn ich dies ausführe, erhalte ich eine Signatur von:
ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==
Welche total nicht passt.
Dinge über die ich nachgedacht habe:
Der Schlüssel hat das Format "Modified URL encoded" (Geänderte URL-
und_
zu+
und/
funktioniert auch nichtDer Python-Beispielcode funktioniert tatsächlich, dies ist also ein gültiges Beispiel.Völliges Umschreiben unserer Codebasis in Python anstelle von PHP (ich habe es geerbt).