我是python的新手。我可以散列,还是可以散列值。我正在使用std hash()函数。我想要做的是首先对一个值进行哈希处理,然后将其发送到某个地方,然后再对其进行哈希处理:
#process X
hashedVal = hash(someVal)
#send n receive in process Y
someVal = unhash(hashedVal)
#for example print it
print someVal
提前Thx
最佳答案
不能做
哈希不是原始值的压缩版本,它是从原始值派生的数字(或类似的东西)。哈希实现的本质是,两个不同的对象可能会产生相同的哈希值(但从统计学上讲,如果哈希算法是一种好的算法,则不太可能)。
这就是Pigeonhole Principle,它基本上表明如果您有N个不同的项目,并且想要将它们放在M个不同的类别中,其中N数大于M(即,项目比类别更多),那么您将结束包含多个项目的某些类别。由于散列值的大小通常比其散列的数据小得多,因此它遵循相同的原理。
因此,一旦获得哈希值,就无法返回。您需要的传输数据的方式与此不同。
例如,一个示例(但不是很好)的哈希算法将是计算数字模数3(即除以3后的余数)。然后,您将从数字中获得以下哈希值:
1 --> 1 <--+- same hash number, but different original values
2 --> 2 |
3 --> 0 |
4 --> 1 <--+
您是否正在尝试以这种方式使用哈希函数,以便:
...?
知道为什么要这样做可能会给您一个比“无法完成”更好的答案。
例如,对于以上3个不同的观察,下面是一种正确执行每个观察的方法: