Я пытаюсь написать код, предотвращающий обновление измененных списков. Для этого я вычисляю хэш SHA1 значений, но hexdigest() этого хэша производит разные результаты, когда я перезапускаю свой интерпретатор ipython. Почему это?Хеширование с SHA1 в python3 не приводит к такому же результату
In [1]: import hashlib
In [2]: hashid = hashlib.sha1()
In [3]: hashid.update(repr(frozenset(sorted(["a","b","c"]))).encode("utf-8"))
In [4]: hashid.hexdigest()
Out[4]: '53ca01b21fd7cb1996634bb45ad74851f73c45d3'
Когда переинициализация Хашида и делать вычисления хэша снова в тех же консолях ipython3 он работает:
In [5]: hashid = hashlib.sha1()
In [6]: hashid.update(repr(frozenset(sorted(["a","b","c"]))).encode("utf-8"))
In [7]: hashid.hexdigest()
Out[7]: '53ca01b21fd7cb1996634bb45ad74851f73c45d3'
Но остановить мою консоль и перезагрузить его производят различные результаты:
In [7]: exit
[email protected] ~/ $ ipython3
In [1]: import hashlib
In [2]: hashid = hashlib.sha1()
In [3]: hashid.update(repr(frozenset(sorted(["a","b","c"]))).encode("utf-8"))
In [4]: hashid.hexdigest()
Out[4]: '6e5813fcb173e35e81d6138eab4d21482885e7eb'
Почему это? И как я могу получить один и тот же SHA1 хэш/hexdigest результат при наличии идентичных отсортированных списков?
аааа TNX, что имеет смысл ... Мог бы часами искал для этого. Это многое проясняет. – RvL
** Пожалуйста, не добавляйте комментарий к ответу, чтобы сказать «Спасибо». ** Если ответ вам помог, [примите его] (http://stackoverflow.com/help/someone-answers). BTW Вас задали 29 вопросов, но приняли только первые. Зачем? –