Python hashlib.sha1函数在每次调用时生成不同的结果

Python hashlib.sha1函数在每次调用时生成不同的结果,python,python-3.x,sha1,hashlib,Python,Python 3.x,Sha1,Hashlib,我有一些带有sha1哈希函数的python3脚本: import hashlib import json token = '61a1d7435fdfsgsdgdsgfaljaslfjhaslfhlsdf' data = {"event": "new_data","data": {"user_id":"1","time":"2019-02-14 13:47:39"}} def genSignature(data, token): data = dict(sorted(data.item

我有一些带有sha1哈希函数的python3脚本:

import hashlib
import json

token = '61a1d7435fdfsgsdgdsgfaljaslfjhaslfhlsdf'
data = {"event": "new_data","data": {"user_id":"1","time":"2019-02-14 13:47:39"}}

def genSignature(data, token):
    data = dict(sorted(data.items()))
    stringData = json.dumps(data,separators=(',', ':'))
    print("stringData=", stringData)
    fullString = stringData.encode('utf8') + str(token).encode('utf8')
    print("fullString=", fullString)
    signature = hashlib.sha1(fullString).hexdigest()
    print("signature=", signature)
    data['data']['signature'] = signature
    return data


print("data=", data)
print("token=", token)
print(json.dumps(genSignature(data,token)))
并通过我的VPS上的shell调用:

data= {'event': 'new_data', 'data': {'user_id': '1', 'time': '2019-02-14 13:47:39'}}
token= 61a1d7435fdfsgsdgdsgfaljaslfjhaslfhlsdf
stringData= {"event":"new_data","data":{"user_id":"1","time":"2019-02-14 13:47:39"}}
fullString= b'{"event":"new_data","data":{"user_id":"1","time":"2019-02-14 13:47:39"}}61a1d7435fdfsgsdgdsgfaljaslfjhaslfhlsdf'
signature= 8af997ea53683d1ddd2c4823ad655dcfb1ada91f
{"event": "new_data", "data": {"user_id": "1", "signature": "8af997ea53683d1ddd2c4823ad655dcfb1ada91f", "time": "2019-02-14 13:47:39"}}
再一次:

data= {'data': {'time': '2019-02-14 13:47:39', 'user_id': '1'}, 'event': 'new_data'}
token= 61a1d7435fdfsgsdgdsgfaljaslfjhaslfhlsdf
stringData= {"data":{"time":"2019-02-14 13:47:39","user_id":"1"},"event":"new_data"}
fullString= b'{"data":{"time":"2019-02-14 13:47:39","user_id":"1"},"event":"new_data"}61a1d7435fdfsgsdgdsgfaljaslfjhaslfhlsdf'
signature= 14dbc74dac6cbee809a3431fda99bae2537911c7
{"data": {"time": "2019-02-14 13:47:39", "signature": "14dbc74dac6cbee809a3431fda99bae2537911c7", "user_id": "1"}, "event": "new_data"}
同样的输入有不同的结果。
每次我在本地机器上启动这个脚本时,结果都是一样的。

json中的字段顺序不同,因此生成了不同的哈希。json在has之前进行排序。在本地机器上进行调用时,结果是一样的。哦,在json.dumps之后,结果真的不同了。