开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3026|回复: 3
收起左侧

[求助] api中sign计算

[复制链接]
结帖率:100% (5/5)
发表于 2014-8-1 19:29:25 | 显示全部楼层 |阅读模式   山西省太原市
Step 1. 构造源串
源串是由3部分内容用“&”拼接起来的: HTTP请求方式 & urlencode(uri) & urlencode(a=x&b=y&…)
源串构造步骤如下:
第1步: 将请求的URI路径进行URL编码(URI不含host,URI示例:/deal/sellerSearchDealList.xhtml)。
请开发者关注: URL编码注意事项 ,否则容易导致后面签名不能通过验证。
第2步: 将除“sign”外的所有参数 按key进行字典升序排列。
注:除非OpenAPI文档中特别标注了某参数不参与签名,否则除sign外的所有参数都要参与签名。
第3步: 将第2步中排序后的参数(key=value)用&拼接起来,并进行URL编码。
请开发者关注: URL编码注意事项 ,否则容易导致后面签名不能通过验证。
第4步: 将HTTP请求方式(GET或者POST)以及第1步和第3步中的字符串用&拼接起来。
源串构造示例如下
(由于是通用说明,这里以/deal/sellerSearchDealList.xhtml 作为示例,且示例中的请求串不可直接复制访问)
  • 原始请求信息:
appOAuthID : 700042973
appOAuthKey : hdUMwmU4P5jQtHpC
HTTP请求方式:GET
请求的URI路径(不含HOST):/deal/sellerSearchDealList.xhtml
请求参数:
appOAuthID=700042973&timeStamp=1344568374452&accessToken=ad39b7dbd59b87cda827223c0e520d6f&charset=gbk&format=xml&randomValue=58095&uin=1280863473&sellerUin=1280863473
  • 下面开始构造源串:
第1步:将请求的URI路径进行URL编码,得到: %2Fdeal%2FsellerSearchDealList.xhtml
第2步:将除“sign”外的所有参数按key进行字典升序排列,
排列结果为: accessToken, appOAuthID, charset, format, randomValue, sellerUin, timeStamp, uin
第3步:将第2步中排序后的参数(key=value)用&拼接起来:
accessToken=ad39b7dbd59b87cda827223c0e520d6f&appOAuthID=700042973&charset=gbk&format=xml&randomValue=58095&sellerUin=1280863473&timeStamp=1344568374452&uin=1280863473
然后进行URL编码( 编码时请关注 URL编码注意事项 ,否则容易导致后面签名不能通过验证 ),编码结果为:
accessToken%3Dad39b7dbd59b87cda827223c0e520d6f%26appOAuthID%3D700042973%26charset%3Dgbk%26format%3Dxml%26randomValue%3D58095%26sellerUin%3D1280863473%26timeStamp%3D1344568374452%26uin%3D1280863473
第4步:将HTTP请求方式(GER or POST),第1步以及第3步中的到的字符串用&拼接起来,
得到源串:
GET&%2Fdeal%2FsellerSearchDealList.xhtml&accessToken%3Dad39b7dbd59b87cda827223c0e520d6f%26appOAuthID%3D700042973%26charset%3Dgbk%26format%3Dxml%26randomValue%3D58095%26sellerUin%3D1280863473%26timeStamp%3D1344568374452%26uin%3D1280863473
Step 2. 构造密钥
得到密钥的方式:在应用的secretOAuthKey末尾加上一个字节的“&”,即secretOAuthKey&,例如:
hdUMwmU4P5jQtHpC&
step 3. 生成签名值
  • 使用HMAC-SHA1加密算法,将Step1中的到的源串以及Step2中得到的密钥进行加密。
    (注:一般程序语言中会内置HMAC-SHA1加密算法的函数,例如PHP5.1.2之后的版本可直接调用hash_hmac函数。)
  • 然后将加密后的字符串经过Base64编码。
    (注:一般程序语言中会内置Base64编码函数,例如PHP中可直接调用 base64_encode() 函数。)
  • 得到的签名值结果如下:
    p05e2i/8aU7R9mzJryYdubQXyuE=

完整的例子:
请求的所有参数:
accessToken=ad39b7dbd59b87cda827223c0e520d6f&appOAuthID=700042973&charset=gbk&format=xml&randomValue=58095&sellerUin=1280863473&timeStamp=1344568374452&uin=1280863473
用于计算sign的源串:
GET&%2Fdeal%2FsellerSearchDealList.xhtml&accessToken%3Dad39b7dbd59b87cda827223c0e520d6f%26appOAuthID%3D700042973%26charset%3Dgbk%26format%3Dxml%26randomValue%3D58095%26sellerUin%3D1280863473%26timeStamp%3D1344568374452%26uin%3D1280863473
计算后的sign值: p05e2i/8aU7R9mzJryYdubQXyuE=

----------------------------------------------------------------------------------------------------------------------------------------------

Step 1和Step 2都会,就是Step 3中使用HMAC-SHA1加密算法,将Step1中的到的源串以及Step2中得到的密钥进行加密,不明白,是Step1中的到的源串以及Step2中得到的密钥分别用HMAC-SHA1加密,还是Step 2&Step 1(如hdUMwmU4P5jQtHpC&GET&%2Fdeal%2FsellerSearchDealList.xhtml&accessToken%3Dad39b7dbd59b87cda827223c0e520d6f%26appOAuthID%3D700042973%26charset%3Dgbk%26format%3Dxml%26randomValue%3D58095%26sellerUin%3D1280863473%26timeStamp%3D1344568374452%26uin%3D1280863473
)这样以后再加密,我试了后,得出的sign值不一样,麻烦高手告一下。
Step 3中 提到 用于计算sign的源串:
GET&%2Fdeal%2FsellerSearchDealList.xhtml&accessToken%3Dad39b7dbd59b87cda827223c0e520d6f%26appOAuthID%3D700042973%26charset%3Dgbk%26format%3Dxml%26randomValue%3D58095%26sellerUin%3D1280863473%26timeStamp%3D1344568374452%26uin%3D1280863473  根本和Step 2中得到的密钥没关系,可是出说将Step1中的到的源串以及Step2中得到的密钥进行加密,实在是不明白,不管怎么算,我算出的sign值和它算出的sign值: p05e2i/8aU7R9mzJryYdubQXyuE=不一样,请高手告一下,谢谢了

结帖率:94% (45/48)

签到天数: 4 天

发表于 2014-8-1 21:03:19 | 显示全部楼层   安徽省安庆市
太长了.实在没有啥耐心....看看其他大婶
回复 支持 反对

使用道具 举报

结帖率:100% (5/5)

签到天数: 5 天

 楼主| 发表于 2014-8-1 21:45:24 | 显示全部楼层   山西省太原市
红颜似水 发表于 2014-8-1 21:03
太长了.实在没有啥耐心....看看其他大婶

不长,关键是最后几句和Step 3这个
回复 支持 反对

使用道具 举报

结帖率:100% (5/5)

签到天数: 5 天

 楼主| 发表于 2014-8-2 23:35:15 | 显示全部楼层   山西省太原市
{:soso_e105:}自己顶下,顶上去
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表