Beispiel #1
0
 def gdbsSign(self,caller, data, sign_secret_key):
     if isinstance(data, dict):
         #FIXME 只处理了data为object的情况
         m = dict()
         for k1, v1 in data.iteritems():
             if isinstance(v1, dict) or isinstance(v1, list):
                 m[k1] = json.dumps(v1, separators=(',', ':'), ensure_ascii=False)
                 # mapSer = dict()
                 # for k2, v2 in v1.iteritems():
                 #     if isinstance(v2,dict)|isinstance(v2,list):
                 #         mapSer[k2] = k2
                 #     else:
                  #         #FIXME 处理json的null值
                 #         mapSer[k2] = str(v2)
                 # mapSer = OrderedDict(sorted(mapSer.items(), key=lambda t:t[0]))
                 # mapSer = "".join(["=".join((str(key), str(elem))) for key, elem in mapSer.iteritems()])
                 # m[k1] = mapSer
             else:
                 #FIXME 处理json的null值
                 m[k1] = str(v1)
         m = OrderedDict(sorted(m.items(), key=lambda t:t[0]))
         m = "".join(["=".join((str(key), str(elem))) for key, elem in m.iteritems()])
         print("拼接出来的字符串为:%s" %m)
         m = md5.new(caller+m+sign_secret_key)
         return m.hexdigest().lower()
     else:
         raise Exception("data is not a dict")