当前位置: 首页 > 面试题库 >

使用pickle.dumps哈希可变对象

南宫勇军
2023-03-14
问题内容

我了解为什么将可变对象放入字典很危险。但是,将所有列表/集合转换为元组/
frozensets是昂贵的;对于许多类型,根本没有容易获得的不可变版本。因此,有时值得直接散列可变对象,并采取适当的预防措施以确保所讨论的对象永远不会被修改。

在开始为可变对象实现非常复杂的自定义哈希函数之前,我想检查一下pickle.dumps用作哈希函数是否存在任何缺点-
无论是在性能,碰撞还是其他方面。


问题答案:

出于类似的原因,不能保证泡菜的输出是规范的,因为决定和设置顺序是不确定的。不要将pickle或pprint或repr用于哈希。



 类似资料:
  • 问题内容: 我需要一个Python / C / C ++ / Java实现,可以 暂停散列进步 和 商店 ,在这样一个文件进度的进展是 可恢复 从该文件在稍后阶段。 无论上面列出的是哪种语言编写的,它都应该可以在Python中正常工作。建议您提供它以便与“ hashlib”一起良好地工作,但这不是必需的。同样,如果已经存在这样的事物,那么到此的链接就足够了。 对于一个想法 ,您的实现应该实现什么。

  • 问题内容: 这是我的代码: 为什么会这样呢? 第一个和第三个对象具有相同的内容和相同的哈希值,但它们讲述了3个唯一的对象? 问题答案: 您还需要以兼容的方式进行定义–否则,相等性将基于对象身份。 在Python 2上,建议您还定义与保持一致。在Python 3上,默认实现将为您委托。

  • 问题内容: 在如何哈希列表?有人告诉我,我应该转换为一个元组第一,如到。 因此,第一个不能散列,而第二个可以散列。为什么*? *我并不是真正地在寻求详细的技术说明,而是在寻找一种直觉 问题答案: 主要是因为元组是不可变的。承担以下工作: 现在,当您这样做时会发生什么?您已修改字典中的键!远道而来!如果您熟悉哈希算法的工作原理,这会让您感到恐惧。另一方面,元组是绝对不变的。看起来好像是在修改元组,但

  • 问题内容: 我正在尝试创建这种字典,但出现错误。我的petInfo结构是这样的: 因此,我想以某种方式使其可散列,但是其组成部分都不是要求的整数。如果其所有字段都不是整数,如何使它符合协议?如果我知道该结构在所有情况下都是唯一的,我可以使用吗? 问题答案: 只需从函数返回即可。仅供参考-哈希值不需要唯一。要求两个相等的对象也必须具有相同的哈希值。

  • 我正在使用iText7执行PDF和签名操作。我的场景是,我在本地机器上计算哈希,并将这个哈希发送到签名服务器,作为响应,得到签名的PKCS1(原始签名),然后我将这个签名嵌入到PDF中。我的代码片段如下: 1:从智能卡设备读取公共证书。 3:初始化PdfSigner并设置签名外观: 4:我已经实现了IExternalSignatureContainer接口来获取文档哈希: 5:获取文档哈希: 7:

  • 我使用OpenSSL创建了一个自签名证书,如下所示: 然后,我在C#.NET4.0中编写了以下代码: 使用一些文章和答案中的解决方案,我有类,我试图在其中实现和注册签名描述: 我已经验证了hash的长度为字节,它返回一个。但是如果我使用var(20字节长),尽管中指定的算法是,但它可以工作,并使用算法对哈希进行签名。 另外,如果我打印,它的值是http://www.w3.org/2000/09/x