尝试使用PHP通过HMAC-SHA1进行数字签名
发布时间:2020-12-13 14:09:35 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试设置一些Google Maps Premier API操作,为此,我需要签署我的URL进行身份验证.如果你去签名的例子,有一些 Python,C#和Java代码,告诉你如何通过HMAC-SHA1进行签名.还有一个例子,我可以测试我的PHP实现.但是,我似乎无法让它工作. 这是我的代码: $key
我正在尝试设置一些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== 哪个完全不匹配. 我想到的事情 >关键是修改URL编码格式,所以更改 – 和_到和/也不工作
你至少有两个问题, Google使用特殊的URL安全Base64.正常的base64_decode不起作用 尝试这个, $key = "vNIXE0xscrmjlyV-12Nj_BvUPaw="; $data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID"; $my_sign = hash_hmac("sha1",base64_decode(strtr($key,'-_','+/')),true); $my_sign = strtr(base64_encode($my_sign),'+/','-_'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |