我知道 SHA1 和 MD5 等散列函数是单向加密系统。
但是有没有一种“可去散列”的散列方法?
就像,它产生一个 x 字符串,然后可以将其“去散列”到原始字符串中。
有没有这样的哈希方法?如果它与 PHP 兼容,将不胜感激。
更新:我所说的散列函数是一种加密方法,它产生一个可以解密的 x 字符串。对困惑感到抱歉。
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
,因为散列函数将较大的数据集映射到较小的数据集。这样做的副作用是您可以从不同的输入数据中获得相同的哈希值,这使得从哈希键计算原始数据变得不可能。例如,它允许检查原始数据是否已被修改 - 您再次将相同的哈希函数应用于原始数据并比较计算的哈希键。如果它们不同,则修改原始数据 - 如果它们相同,则原始数据(至少非常有可能)未修改。
您正在寻找的可能是压缩/解压缩算法或加密/解密算法。
散列不是(单向)加密,因为散列值永远无法解密为原始值;这是设计使然。
此外,散列函数的设计目的是很难找到一个匹配给定散列值的数据集(参见碰撞)
正如Andreas 建议的那样,您正在寻找压缩或加密功能。