mysql生成类似qq号_MySQL-类似腾讯开放接口对应QQ用户的openid的生成方法?

签名过程涉及到的概念

AccessKey: 公钥,简称ak

SecretKey: 密钥,可以在平台申请,简称sk

Signature: 利用公钥,密钥和用户的请求内容算出的签名。用来验证用户。

每次请求都需要把相应的签名通过querystring的方式发送,比如:

Sign=MBO:aCLCZtoFQg8I:WQMFNZEhN2k8xxlgikuPfCJMuE8%3D

签名组成

Sign=Flag:AccessKey:Signature

Flag: 表明签名的对象。云存储需要根据Flag来判断签名的具体对象。

Flag=[M|B|O|T|I|S],可以是多个组合,但是必须顺序给出。

M: 请求的method, 可以是[PUT|GET|POST|DELETE|HEAD]

B: bucket name

O: object name

T: 链接的有效截止时间。 比如 time=1312956443表明在时间点Wed Aug 10 2011 14:07:23前有效

I: 访问ip限制。比如ip=192.168.0.1表示只有此ip能访问该链接

S:限制上传object大小,比如size=100,表示不能上传大小超过100B的object

AccessKey: 参考如上介绍

Signature: 签名

Signture=urlencode(base64_encode(hash_hmac('sha1', Content, SecretKey,true)))

content由Flag、 bucket、object,以及各个参数组成。

原理

用户根据自己申请的AccessKey,SecretKey和请求的内容计算出Signature,然后通过querystring的方式发生给云存储。

云存储按照AccessKey知道对应的SecretKey,然后根据Flag来算出签名,如果云存储计算的与请求的相同,则认证通过。否则返回403

举例

现在需要上传资源到bucket: mybucket

其中object为: /myobject

但是要求此链接在时间点“Wed Aug 10 2011 14:07:23”前有效,同时只允许ip:192.168.0.1访问。 上传文件的大小不能超过100字节.列表如下:

bucket:mybucket

object: /myobject

time:1312956443

ip=192.168.0.1

size=100

Flag=MBOTIS

Flag=MBOTIS表示需要对method,bucket,object,time,ip,size做签名。

注意:flag必须严格按照[M|B|O|T|I|S]的顺序。那么contet计算如下:

Content= Flag + "n"

+ "Method=PUT" + "n"

+ "Bucket=mybucket" + "n"

+ "Object=/myobject" + "n"

+ "Time=1312956443" + "n"

+ "Ip=192.168.0.1" + "n"

+ "Size=100" + "n"

引用:http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%AD%BE%E5%90%8D%E7%AE%97%E6%B3%95

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值