gpt4 book ai didi

php - 尝试使用 PHP 通过 HMAC-SHA1 进行数字签名

转载 作者:可可西里 更新时间:2023-10-31 23:03:15 25 4
gpt4 key购买 nike

我正在尝试设置一些 Google Maps Premier API 操作,为此,我需要签署我的 URL 以进行身份​​验证。如果您查看签名示例,可以使用一些 Python、C# 和 Java 代码向您展示如何通过 HMAC-SHA1 进行签名。还有一个示例,以便我可以测试我的 PHP 实现。但是,我似乎无法让它工作。

这是我的代码:

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

当我运行它时,我得到了以下的签名:

ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==

这完全不匹配。

我想到的事情:

  1. key 是Modified URL编码格式,所以把-_改成+/不工作
  2. Python 示例代码确实有效,所以这是一个有效的示例。
  3. 用 Python 而不是 PHP 完全重写我们的代码库(我继承了它)。

最佳答案

你至少有2个问题,

  1. Google 使用特殊的 URL 安全 Base64。正常的 base64_decode 不起作用。
  2. 您需要生成二进制的 SHA1。

试试这个,

$key = "vNIXE0xscrmjlyV-12Nj_BvUPaw=";
$data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID";
$my_sign = hash_hmac("sha1", $data, base64_decode(strtr($key, '-_', '+/')), true);
$my_sign = strtr(base64_encode($my_sign), '+/', '-_');

关于php - 尝试使用 PHP 通过 HMAC-SHA1 进行数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com