对于 Google Maps Business API 查询,我需要使用 HMAC-SHA1 对每个查询进行数字签名。我们使用带有 VBA 宏的 Excel 文件来发送查询并解析输出,因此我想在 VBA 中创建签名。我发现这个问题 + 答案:VBA 中的 Base64 HMAC SHA1 字符串
但是,当查询发送到 Google API 时,此代码的字符串签名无效。
Google 提供了一些示例脚本。我使用与测试上面的 VBA 代码相同的输入测试了Python 示例脚本,并且 Python 代码确实返回了一个有效的签名。所以似乎提供的 VBA 代码没有构建正确的 HMAC-SHA1 签名,但我找不到问题(我没有加密经验,只有基本的 VBA 知识)。
我创建了一个 HMAC-SHA1 密钥用于测试目的:1412SxPev45oMMRQSXazwQp789yM=
当使用“ abc”作为字符串输入运行时,我得到以下返回:
VBA 代码:Fsu0z3i6Ma5HCrP3eXucrdssJLc=
Python 代码:IFxkS7B_ePtZrvU8sGmiaipTHio=
有谁知道如何在 VBA 中计算一个正确的 HMAC-SHA1,它等于 Python 输出?
编辑 03/04/2014:
根据 Alex K. 的建议,我确保使用以下代码将 SharedSecretKey 解码为 Base64http://thydzik.com。我将该函数添加DecodeBase64到下面的 VBA 代码中。
由于此输出是正确的,但还不是 URL 安全的(因此与 …