Mic*_*ner 5 python hash pickle
我想对一些pickle
文件进行哈希处理以进行验证,但我想知道 Python 是否pickle
总是为相同的输入生成相同的输出,至少在协议版本内?我想知道操作系统是否有影响?你有参考资料吗?
另外,根据 pickle 内部的工作原理,这并不是一个谜,但您可能会发现这种行为令人不安:
>>> class B:
... pass
>>>
>>> b = B()
>>> b.x = 1
>>> b.y = 2
>>>
>>> c = B()
>>> c.y = 2
>>> c.x = 1
>>> hash(pickle.dumps(b))
5326405855805501882
>>> hash(pickle.dumps(c))
-2711706543463941149
Run Code Online (Sandbox Code Playgroud)
根据记录,似乎有人尝试使用pickle来达到科学可重复性的目的,但该项目现在似乎已被放弃。