- from urllib import parse
- url='http://www.baidu.com?query=python 基础教程'
- url_str=parse.quote_plus(url)#URL 编码
- baidu_url='http://www.baidu.com?query=python基础教程'
- # print(parse.unquote_plus(baidu_url))#URL 解码
- import hashlib
- def my_md5(s):
- md=hashlib.md5()# 实例化 md5
- md.update(s.encode())#
- return md.hexdigest()
- #vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20-29;7C-67-A2-9A-06-05;7C-67-A2-9A-06-06;7C-67-A2-9A-06-09;00-00-00-00-00-0000E0
- def get_vendorId(req_data):
- data_dic={}
- sub_list=req_data.split('&')
- for i in sub_list:
- k,v=i.split('=')
- # data_dic.setdefault(k,v)
- data_dic[k]=v
- return data_dic.get('vendorId')
- def sign(req_date):
- verid=get_vendorId(req_date)#d 调用获取 vendorId 函数
- first=my_md5(verid)
- astr=my_md5(first)
- url_str=parse.quote_plus(req_date)#url 编码
- res=my_md5(astr+url_str)
- return res
- class Sign(object):
- def __init__(self,req_data):
- self.req_data=req_data# 这写了 self 的话, 在其他的函数里面也可以用 self.xxx
- self.get_verid()
- self.get_sign()
- def md5(self,s):
- md = hashlib.md5() # 实例化 md5
- md.update(s.encode())
- return md.hexdigest()
- def get_verid(self):
- data_dic = {}
- sub_list = self.req_data.split('&')
- for i in sub_list:
- k, v = i.split('=')
- # data_dic.setdefault(k,v)
- data_dic[k] = v
- self.verid=data_dic.get('vendorId')
- def get_sign(self):
- # self.get_verid()
- frist=self.md5(self.verid)
- astr=self.md5(frist)
- url_str=parse.quote_plus(self.req_data)
- self.sign=self.md5(astr+url_str)
- return self.sign
- print(__name__)
- if __name__ == '__main__':
- s = 'vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20-29;7C-67-A2-9A-06-05;7C-67-A2-9A-06-06;7C-67-A2-9A-06-09;00-00-00-00-00-0000E0'
- abc=Sign(s)
- # abc.get_sign()# 方法
- print(abc.sign)# 打印它的变量
来源: http://www.bubuko.com/infodetail-2609515.html