Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1423877
  • 博文数量: 264
  • 博客积分: 5810
  • 博客等级: 大校
  • 技术积分: 3528
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 17:15
文章分类

全部博文(264)

文章存档

2011年(264)

分类: Python/Ruby

2011-06-04 08:43:18

应用场景:
组件层是一个接口提供商,需要给多个外部系统提供接口服务。如何保证过来的接口请求是安全的呢?我个人想实现类似于支付这样的模式。实现的原理大概如下
系统1.要传递的参数如下
a='name'
b='hello'
这两个字段要参与加密。其中密钥为key=123,先对其进行一次md5

$str = 'a=name&b=hello&key=123'

32位加密:

import hashlib

print hashlib.new("md5", $str).hexdigest()

现在将这三个参数一并传递到组件。

组件要做的第一件事情就是接收到a与b的值加上当前我们所约定好的密钥值进行一次MD5加密看与我们所传递过来的MD5的值数据是否一致如果不相同就说明这个接口是一个有问题的。否则就是正常的可以正常工作了!

PS:主要是在PUB这块的接口还有数据的增、删改接口其他的可以不用如果只是查询的话!

部分代码如下:

  1. appid = request.GET.get('appid','0').strip()
  2. mdkey = hashlib.new("md5", "appid="+appid+"&key="+ssh_key).hexdigest()#ssh_key密钥
  3. params = urllib.urlencode({'appid': appid,'syscode':sys_code,"mdkey":mdkey})
  4. url_handle=urllib.urlopen(premoduleurl+"pubhost/ho/del/?%s" % params)
  5. 这个是调用方要提供的

接收方
appid = request.GET.get('appid','').strip()
 """
   获取系统代号与加密的KEY
 """
syscode = request.GET.get('syscode','').strip()  #当前系统代号
mdkey = request.GET.get('mdkey','').strip()
#获取当前这个系统代号所对应的密钥。客户端传递过来的加密字符串 
ssh_key = sys_ssh_key.get(syscode)
selfmdkey = hashlib.new("md5", "appid="+appid+"&key="+ssh_key).hexdigest() #拿出来再加密
if mdkey.strip() == selfmdkey.strip():
     #表示双方加密的字符串一样。就可以做动作!       
else: return HttpResponse("0")

阅读(2341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~