可恢复的hashlib:cpython基于openssl的hashlib标准库的可选择接口
rehash的Python项目详细描述
rehash是 cpythonhashlib标准库。rehash提供散列 可以从它们的repr()中进行腌制、持久化和重组, 以其他方式序列化。rehash api的其余部分与 hashlib。
rehash散列器可用于检查点和恢复进度 散列大字节流时:
importpickle,rehashhasher=rehash.sha256(b"foo")state=pickle.dumps(hasher)hasher2=pickle.loads(state)hasher2.update(b"bar")asserthasher2.hexdigest()==rehash.sha256(b"foobar").hexdigest()
安装
pip install rehash
应用程序
当您的vm是短期的或可抢占的,并且要散列的对象很大时,rehash在任何情况下都是有用的。为了 例如,rehash可用于在aws lambda函数或google cloud之间传递大型对象的散列状态。 函数,其运行时间限制分别为5分钟和9分钟(todo:example)。
非openssl散列器
^ python 3.6中的{tt4}$和blake2哈希算法不是基于openssl的,rehash不支持它们。
皮比
pypy使用自己的hasher实现。这些不能使用rehash序列化。
安全说明
默认情况下,rehash对象用一个暴露其内部状态的repr()呈现自己。这样就可以 从停止的点继续散列。如果在特定条件下通过不受信任的通道暴露, 这可能允许攻击者使用扩展攻击。如果你不确定这件事的含义, 导入rehash后设置rehash.opaque_repr = True。
链接
虫子
请在GitHub上报告错误、问题、功能请求等。