面向过程编程 (执行者) 1、4S店 掏钱买车 2、保险公司 上保险 3、税务局 交购置税 4、交管局 验车、选号、交钱、取牌、上牌
面向对象 (指挥者) 买车办事处 1、4S店 掏钱买车 2、保险公司 上保险 3、税务局 交购置税 4、交管局 验车、选号、交钱、取牌、上牌
举例:加密规则
方法一、面向过程
from urllib import parse
import hashlib
def get_vendorid(req_data): data_dict = {} sub_list = req_data.split('&') #【vendorId=1697,poscode=xxx】 for i in sub_list: # verid=1697 k,v = i.split('=') #[verid,1697] # data_dict.setdefault(k,v) data_dict[k]=v return data_dict.get('vendorId')
def sign(req_data): verid = get_vendorid(req_data) #调用获取veriodid函数 first = my_md5(verid) astr = my_md5(first) #两次md5 url_str = parse.quote_plus(req_data) #url编码 res = my_md5(astr+url_str) return res
def my_md5(s): md = hashlib.md5() md.update(s.encode()) return md.hexdigest()
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'# print(sign(s))
***********************************************************************************
方法二、面向对象
from urllib import parseimport hashlib
class Sign(object): def __init__(self,req_data): self.req_data = req_data #这写了self的话,在其他的函数里面也可以用self.xx self.get_verid() self.get_sign() def md5(self,s): md = hashlib.md5() md.update(s.encode()) return md.hexdigest()
def get_verid(self): data_dict = {} sub_list = self.req_data.split('&') for i in sub_list: k, v = i.split('=') data_dict[k] = v self.verid = data_dict.get('vendorId') def get_sign(self): 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
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'
sign = Sign(s)
print(sign.sign)
转载于:https://www.cnblogs.com/lynn-chen/p/9088419.html