Функция hashlib.sha1 генерирует разные результаты при каждом вызове - PullRequest
0 голосов
/ 22 марта 2019

У меня есть скрипт на python3 с хэш-функцией sha1:

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)))

И позвоните через shell на моем VPS:

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"}

И у него разные результаты при одинаковом вводе. И каждый раз, когда я запускаю этот скрипт на локальном компьютере, он дает одинаковые результаты.

...