php string hash ( string $algo , string $data [, bool $raw_output = false ] )
中的函数algo
=所选散列算法的名称(即" md5"," sha256"," haval160, 4",etc ..),data
=要散列的消息。raw_output
=设置为TRUE时,输出原始二进制数据。 FALSE输出小写的十六进制。所以,如果我有这个例子
<?php
echo hash('ripemd128', 'The quick brown fox jumped over the lazy dog.');
?>
以上示例输出(看起来完全随机):51d43720fd516108ef5ed20e9031bb865ede861e
所以我想知道这些功能在哪里使用,为什么?还有一种方法或函数可以将输出恢复为原始字符串吗?
答案 0 :(得分:0)
所以我想知道这些功能在哪里使用以及为什么?
它们被用于数字签名算法,数字指纹识别算法,内容可寻址存储,构建可以快速安全地遍历的防篡改数据结构,以及用于抵御复杂性攻击的快速查找。
还有一种方法或函数可以将输出恢复为原始字符串吗?
没有。在许多情况下,拥有这种能力会打败哈希点。此外,使用counting argument证明这是不可能的,这是微不足道的。
答案 1 :(得分:0)
它用于数字签名,例如将带有密钥的串联字符串散列到另一个,以检查两个散列字符串是否正确,它就像一个键,以便您获得访问权限。
没有办法解密它,因为它是如何制作的,它是一种单向散列方法。
如果您想要一个加密和解密字符串的方法,请使用mcrypt_encrypt和mcrypt_decrypt
答案 2 :(得分:0)
这个函数用于计算一种&#34;指纹&#34;对于一些数据。在你的例子中,这将是你的字符串。相同的算法将为相同的输入数据产生相同的散列。如果更改输入数据,则计算的散列将不同。
一种流行的用法是存储密码。因此,您不能以明文形式存储密码,而是使用散列值。
对于你的问题的第二部分:哈希算法是&#34;单向&#34;只(应该是))。所以你无法从散列值恢复输入数据。