在哪里使用 hash() 函数以及为什么


where hash() function is used and why

>php string hash ( string $algo , string $data [, bool $raw_output = false ] )中的函数,其中algo=所选哈希算法的名称(即"md5","sha256","haval160,4"等),data=要哈希的消息,raw_output=设置为 TRUE 时,输出原始二进制数据。FALSE 输出小写退出。所以如果我有这个例子

<?php
echo hash('ripemd128', 'The quick brown fox jumped over the lazy dog.');
?>

上面的示例输出(看起来完全随机): 51d43720fd516108ef5ed20e9031bb865ede861e

所以我想知道在哪里使用这些功能,为什么? 还有没有办法或函数将输出再次恢复为原始字符串?

所以我想知道在哪里使用这些功能以及为什么?

它们用于数字签名算法、数字指纹算法、内容可寻址存储、构建可快速安全地遍历的防篡改数据结构,以及用于抵御复杂性攻击的快速查找。

还有没有办法或函数将输出再次恢复为原始字符串?

不。在许多情况下,拥有这种能力会破坏哈希点。此外,如前所述,使用计数参数证明这是不可能的是微不足道的。

它用于数字签名,例如将串联的字符串与密钥对另一个进行哈希处理,以检查两个哈希字符串是否正确,它就像一个密钥,以便您获得执行某些操作的访问权限。

没有办法解密它,因为它就是这样制作的,它是一种单向哈希方法。

如果需要加密和解密字符串的方法,请使用mcrypt_encrypt和mcrypt_decrypt

此函数用于计算某些数据的"指纹"。 在您的示例中,这将是您的字符串。 相同的算法将为相同的输入数据生成相同的哈希。 如果更改输入数据,计算的哈希将有所不同。

一种流行的用法是存储密码。 因此,您不会以明文形式存储密码,而是以散列值的形式存储密码。

对于问题的第二部分:哈希算法只是"单向"的(应该是;))。 因此,您无法从哈希值恢复输入数据。