Intentando firmar digitalmente a través de HMAC-SHA1 con PHP

Estoy intentando configurar alguna acción de la API Premier de Google Maps, y para hacerlo, necesito firmar mis URL para autenticarme. Si baja a los ejemplos de Firma, hay algunos códigos Python, C # y Java para mostrarle cómo hacer la firma a través de HMAC-SHA1. También hay un ejemplo para que pueda probar mi implementación de PHP. Sin embargo, parece que no puedo hacer que funcione.

Aquí está mi código:

$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=";

Cuando ejecuto esto, obtengo una firma de:

ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==

Lo cual no coincide totalmente.

Cosas que he pensado:

La clave está en formato codificado URL modificado, por lo que cambia- y_ a+ y/ tampoco funcionaEl código de ejemplo de Python sí funciona, por lo que este es un ejemplo válido.Reescribiendo completamente nuestra base de código en python en lugar de PHP (lo heredé).

Respuestas a la pregunta(3)

Su respuesta a la pregunta