我知道哈希函数(如SHA1和MD5)是单向加密系统。
但是有一种'dehashable'的散列方法吗?
就像,它产生一个x字符串,然后可以在原始字符串中“去掉”。
有这样的散列方法吗?如果它与PHP兼容,将不胜感激。
UPDATE:哈希函数的意思是加密方法,它产生一个可以解密的x字符串。对不起,感到困惑。
答案 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,您正在寻找压缩或加密功能。