PHP crypt函数在加密变量时能生成两个相同的哈希值吗?


Can the PHP crypt function generate two same hashes when encrypting variables

这样的代码可以生成两个相同的哈希吗?(假设时钟运行正常)

 <?php
 $t = time();
 $u = $_POST['username'];
 $st = $t.$u
 $salt = 'c5ac71cd162840eb7a4c2035ee132507';
 $e = crypt($st, $salt);
 ?>

根据散列和鸽子洞原理的定义,是的,任何散列都会产生碰撞。一个好的哈希的定义性质之一是两个输入产生相同输出的机会非常低,在实践中可以忽略不计。

话虽如此,相同的输入总是会产生相同的输出(哈希的另一个定义质量),如果你打算使用静态盐作为输入,并且相对很少更改像time()这样的"随机"值(它只每秒更改一次,这在计算中是永恒的),产生碰撞的机会更高。

我不能评论这里哈希的正确用法是什么,因为我不知道你想用它来做什么。