xfan001
5/16/2016 - 1:25 AM

类似微信支付的签名和校验逻辑,保证数据准确性

类似微信支付的签名和校验逻辑,保证数据准确性

import hashlib

#根据sign_key和关键字生成签名
def gen_sign(sign_key, **kwargs):
    valid_keys = [k for k in kwargs if kwargs[k] and k != 'sign']
    valid_keys.sort()
    ostr = ''
    for k in valid_keys:
        ostr += '%s=%s&' % (k, kwargs[k])
    ostr += '%s=%s' % ('key', sign_key)
    if isinstance(str, unicode):
        ostr = ostr.encode('utf-8')
    sign = hashlib.md5(ostr).hexdigest().upper()
    return sign

#核对签名
def check_sign(sign_key, **kwargs):
    sign = gen_sign(sign_key, **kwargs)
    return sign == kwargs.get('sign')