gpt4 book ai didi

Python unhash 值

转载 作者:太空狗 更新时间:2023-10-29 21:12:40 26 4
gpt4 key购买 nike

我是 python 的新手。我可以取消哈希,或者更确切地说,我怎样才能取消哈希值。我正在使用 std hash() 函数。我想做的是首先散列一个值,将它发送到某个地方,然后再散列它:

#process X
hashedVal = hash(someVal)
#send n receive in process Y
someVal = unhash(hashedVal)
#for example print it
print someVal

提前致谢

最佳答案

这是不可能的。

散列不是原始值的压缩版本,它是从原始值派生的数字(或类似的东西)。哈希实现的本质是两个不同的对象可能产生相同的哈希值(但如果哈希算法是一个好的算法,则统计上不太可能)。

这被称为 Pigeonhole Principle这基本上表明,如果您有 N 个不同的项目,并希望将它们放入 M 个不同的类别中,其中 N 数大于 M(即项目多于类别),您最终会得到一些包含多个类别的类别项目。由于散列值的大小通常比它散列的数据小得多,因此它遵循相同的原则。

因此,一旦拥有哈希值就不可能返回。您需要一种与此不同的数据传输方式。

例如,一个示例(但不是很好的)哈希算法是计算数模 3(即除以 3 后的余数)。然后您将从数字中获得以下哈希值:

1 --> 1  <--+- same hash number, but different original values
2 --> 2 |
3 --> 0 |
4 --> 1 <--+

您是否尝试以这种方式使用哈希函数,以便:

  • 节省空间(您观察到散列值的大小比原始数据小得多)
  • 安全传输(您已经观察到哈希值难以逆转)
  • 传输数据(您已经观察到散列数/字符串比复杂的对象层次结构更容易传输)

...?

知道您为什么要这样做可能会给您一个比仅仅“它不能完成”更好的答案。

例如,对于上述 3 种不同的观察,这里有一种方法可以正确地进行每一种观察:

  • 压缩/解压缩,例如使用 gzip 或 zlib(这两种通常在大多数编程语言/运行时可用)
  • 加密/解密,例如使用 RSA、AES 或类似的安全加密算法
  • 序列化/反序列化,这是为获取复杂的对象层次结构而构建的代码,并生成二进制或文本表示,稍后可以将其反序列化回新对象

关于Python unhash 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com