import hashlib import json import random import string try: string_type = basestring PYTHON_VERSION = 2 except NameError: string_type = str PYTHON_VERSION = 3 def gen_random_string(str_len): return ''.join( random.choice(string.ascii_letters + string.digits) for _ in range(str_len)) def gen_md5(*args): args = [handle_req_data(item) for item in args] return hashlib.md5("".join(args).encode('utf-8')).hexdigest() def handle_req_data(data): if PYTHON_VERSION == 3 and isinstance(data, bytes): # In Python3, convert bytes to str data = data.decode('utf-8') if not data: return data if isinstance(data, str): # check if data in str can be converted to dict try: data = json.loads(data) except ValueError: pass if isinstance(data, dict): # sort data in dict with keys, then convert to str data = json.dumps(data, sort_keys=True) return data