我想创建一个dict的校验和,以知道它是否被修改过
目前我有:
>>> import hashlib
>>> import pickle
>>> d = {'k': 'v', 'k2': 'v2'}
>>> z = pickle.dumps(d)
>>> hashlib.md5(z).hexdigest()
'8521955ed8c63c554744058c9888dc30'
或许存在更好的解决方案?
注意:我想创建一个dict的唯一id来创建一个好的Etag。
编辑:我可以在dict中包含抽象数据
Tags:
像这样的:
对dict中的每个元组(键、值)进行哈希运算,并将它们全部异或。
@katrielex先生 如果dict包含不可更改的项,则可以执行以下操作:
或者更好
我不知道
pickle
是否保证每次都以相同的方式序列化散列。如果你只有字典,我会选择对
keys()
,sorted()
调用的o个组合,基于排序的键/值对构建一个字符串,并在此基础上计算校验和在Python 3中,散列函数用随机数初始化,每个Python会话的随机数都不同。如果这对于预期的应用程序是不可接受的,请使用zlib.adler32来构建dict的校验和:
相关问题 更多 >
编程相关推荐