1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- #
- # 签名
- # 字典升序
- # 拼接规则:secret_key_value+key+value
- # author: Scott Chen
- # date: 2019-12-17
- import time
- from hashlib import md5
- from log_ware import LogWare
- logger = LogWare().get_logger()
- class Signature:
- def __init__(self, in_params_map, secret_key):
- self.__params = in_params_map
- self.__secret_key = secret_key
- self.__sort_params = {}
- self.__joint_str = ''
- self.__out_params = in_params_map
- # 请求参数字典排序-升序
- def __dict_sort_asc(self):
- temp = sorted(self.__params.items())
- for i in temp:
- self.__sort_params[i[0]] = i[1]
- logger.debug('升序排列后:%s', str(self.__sort_params))
- # 参数拼接
- def __params_joint(self):
- self.__joint_str += self.__secret_key
- for k, v in self.__sort_params.items():
- self.__joint_str += (k + v)
- logger.debug('参数拼接后:%s', str(self.__joint_str))
- # md5签名
- def sign_with_md5(self):
- self.__dict_sort_asc()
- self.__params_joint()
- sign_str = md5(self.__joint_str.encode("utf-8")).hexdigest()
- logger.debug('md5签名的参数值:%s', sign_str)
- self.__out_params['sign'] = sign_str
- logger.debug('请求参数签名结果:%s', str(self.__out_params))
- return self.__out_params
- # 单元测试
- if __name__ == '__main__':
- data = {
- 'merchId': '111',
- 'merchName': '商户',
- 'thirdPartyMerchCode': '222',
- 'thirdPartyMerchName': '三方商户',
- 'name': '张三',
- 'idCard': '440305198009183074',
- 'isCheckIdCard': '0'
- }
- params_map = {
- 'merchId': '111',
- 'data': str(data),
- 'timestamp': str(int(time.time()))
- }
- secret_key = 'abc789'
- instance = Signature(params_map, secret_key)
- ret = instance.sign_with_md5()
- logger.debug(str(ret))
|