首页 > 解决方案 > hashlib.sha1 函数每次调用产生不同的结果

问题描述

我有一些带有 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"}

并且它具有相同的输入不同的结果。当我在本地机器上启动这个脚本时,每次都有相同的结果。

标签: pythonpython-3.xsha1hashlib

解决方案


推荐阅读