PHP:如何生成字符串的hmac SHA1签名?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP:如何生成字符串的hmac SHA1签名?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1751字,纯文字阅读大概需要3分钟。
内容图文
![PHP:如何生成字符串的hmac SHA1签名?](/upload/InfoBanner/zyjiaocheng/729/ca91f02fc2234573b09c683d5f93f0e2.jpg)
我正在尝试使用PHP连接到API并需要正确的签名.
他们的文件逐字记录:
The command string needs to hashed using HMAC SHA-1 hashing algorithm
against the API secret key. The resulting byte array should be Base64
encoded in UTF-8 format so that it can be passed via http.To generate the signature you have to lower case the complete list of
request parameters and sort them alphabetically via the field for each
field-value pair. The resulting string to sign from the previous
example with a secret key VDaACYb0LV9eNjTetIOElcVQkvJck_J_QljX would
be:apikey=mivr6x7u6bn_sdahobpjnejpgest35exqjb8cg20&command=deployvirtualmachine&serviceofferingid=21624abb-764e-4def-81d7-9fc54b5957fb&templateid=54c83a5e-c548-4d91-8b14-5cf2d4c081ee&zoneid=1128bd56-b4d9-4ac6-a7b9-c715b187ce11
Resulting in a signature value of:
ahlpA6J1Fq6OYI1HFrMSGgBt0WY%3D
示例尝试:
$string = 'apikey=mivr6x7u6bn_sdahobpjnejpgest35exqjb8cg20&command=deployvirtualmachine&serviceofferingid=21624abb-764e-4def-81d7-9fc54b5957fb&templateid=54c83a5e-c548-4d91-8b14-5cf2d4c081ee&zoneid=1128bd56-b4d9-4ac6-a7b9-c715b187ce11
';
$string = utf8_encode(strtolower($string));
$key = 'VDaACYb0LV9eNjTetIOElcVQkvJck_J_QljX';
$signature = hash_hmac('sha1', $string , $key);
print 'SIGNATURE:'.$signature.'<br>';
if($signature=='ahlpA6J1Fq6OYI1HFrMSGgBt0WY%3D'){
print 'SUCCESS';
}else{
print 'FAIL';
}
结果:9077d90baa7ab8913811b64a50814b640dce60eb
假设是:ahlpA6J1Fq6OYI1HFrMSGgBt0WY =
问题:结果与他们的文档不符.知道我做错了什么吗?
解决方法:
您的签名应该像这样生成:
$signature = urlencode(base64_encode(hash_hmac('sha1', $string , $key, true)));
最后一个参数的默认值为false.然后它将返回十六进制编码的字符串而不是原始字节.然后你必须按照文档中的说明对字节进行base64_encode.然后你必须对它进行urlencode,因为=必须进行转换
内容总结
以上是互联网集市为您收集整理的PHP:如何生成字符串的hmac SHA1签名?全部内容,希望文章能够帮你解决PHP:如何生成字符串的hmac SHA1签名?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。