加密变量时,PHP crypt函数能否生成两个相同的哈希

加密变量时,PHP crypt函数能否生成两个相同的哈希,php,encryption,Php,Encryption,这样的代码可以生成两个相同的哈希吗? (假设时钟运行正常) 根据散列的定义,是的,任何散列都会产生冲突。好的散列的定义特性之一是,两个输入产生相同输出的可能性很低,在实践中可以忽略不计 话虽如此,相同的输入总是会产生相同的输出(散列的另一个定义性质),如果您打算使用静态salt作为输入,并且相对很少更改诸如time()之类的“随机”值(它只会每秒钟更改一次,这在计算中是永恒的),发生碰撞的可能性更高 我无法评论这里哈希的正确用法,因为我不知道您想用它做什么。根据哈希的定义,是的,任何哈希都会产生

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


根据散列的定义,是的,任何散列都会产生冲突。好的散列的定义特性之一是,两个输入产生相同输出的可能性很低,在实践中可以忽略不计

话虽如此,相同的输入总是会产生相同的输出(散列的另一个定义性质),如果您打算使用静态salt作为输入,并且相对很少更改诸如
time()
之类的“随机”值(它只会每秒钟更改一次,这在计算中是永恒的),发生碰撞的可能性更高


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

根据哈希的定义,是的,任何哈希都会产生冲突。好的散列的定义特性之一是,两个输入产生相同输出的可能性很低,在实践中可以忽略不计

话虽如此,相同的输入总是会产生相同的输出(散列的另一个定义性质),如果您打算使用静态salt作为输入,并且相对很少更改诸如
time()
之类的“随机”值(它只会每秒钟更改一次,这在计算中是永恒的),发生碰撞的可能性更高


我无法评论哈希的正确用法,因为我不知道你想用它做什么。

你是说如果时间改变了?理论上讲,但实际上不会。@WaleedKhan这是我的问题:它能随着时间的推移生成两个相同的哈希吗?天/月/年?这里的情况是两个用户使用相同的用户名在同一秒注册。您可以将$t更改为:
$t=time().mt_rand()以降低这种可能性。是的,它会随着时间的推移生成相同的散列,但这需要数百万年的时间。你是说,如果时间发生变化?理论上讲,但实际上不会。@WaleedKhan这是我的问题:它能随着时间的推移生成两个相同的哈希吗?天/月/年?这里的情况是两个用户使用相同的用户名在同一秒注册。您可以将$t更改为:
$t=time().mt_rand()以降低这种可能性。是的,它会随着时间的推移产生相同的散列,但这需要数百万年的时间
 <?php
 $t = time();
 $u = $_POST['username'];
 $st = $t.$u
 $salt = 'c5ac71cd162840eb7a4c2035ee132507';
 $e = crypt($st, $salt);
 ?>