123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- #
- # 签名
- # 字典升序
- # 拼接规则:secret_key_value+key+value
- # author: Scott Chen
- # date: 2019-12-17
- import time
- from hashlib import md5
- 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]
- print('升序排列后:{}'.format(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)
- print('参数拼接后:{}'.format(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()
- print('md5签名的参数值:{}'.format(sign_str))
- self.__out_params['sign'] = sign_str
- print('请求参数签名结果:{}'.format(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()
- print(str(ret))
|