是否存在“可消除”的散列方法?

时间:2012-11-30 08:37:03

标签: php hash

我知道哈希函数(如SHA1和MD5)是单向加密系统。

但是有一种'dehashable'的散列方法吗?

就像,它产生一个x字符串,然后可以在原始字符串中“去掉”。

有这样的散列方法吗?如果它与PHP兼容,将不胜感激。

UPDATE:哈希函数的意思是加密方法,它产生一个可以解密的x字符串。对不起,感到困惑。

2 个答案:

答案 0 :(得分:5)

hashing functions such as SHA1 and MD5 are one-way encryption systems.

不完全 - 他们就像你说的那样hashing functions。它们通常与加密系统一起使用,例如,对于密码哈希算法,但它们不是加密系统或加密算法。

But is there a hashing method which is 'dehashable'?

不,它不会是hash function,因为哈希函数将较大的数据集映射到较小的数据集。这有副作用,您可以从不同的输入数据中获取相同的哈希值,这使得无法从哈希键计算原始数据。例如,它允许检查原始数据是否已被修改 - 您再次将相同的哈希函数应用于原始数据并比较计算出的哈希键。如果它们不同,则修改原始数据 - 如果它们相同,则原始数据(至少很可能)未经修改。

您正在寻找的可能是压缩/解压缩算法或加密/解密算法。

答案 1 :(得分:2)

哈希(单向)加密,因为哈希值永远不能解密为原始值;这是设计的。

此外,哈希函数旨在使得很难得出一个与给定哈希值匹配的数据集(参见collision

作为Andreas suggests,您正在寻找压缩或加密功能。