通常我们mt_rand
用来创建一个随机盐来使用它crypt()
。但根据mt_rand
php 网站上的手册页“不能用于加密目的 [...] 考虑使用 openssl_random_pseudo_bytes() 代替。” 此外,在crypt
php 网站的手册页上,有人建议使用
mcrypt_create_iv
因此,为了测试它们,我使用了这个crypt 的包装器并更改了以下行
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);
//change it to
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", openssl_random_pseudo_bytes(63, $cstrong), 50);
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mcrypt_create_iv(63, MCRYPT_RAND), 50);
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_srand(), 1);
然后我注释了除一行之外的所有行并开始运行代码,以检查每个函数。我刷新了我的页面,验证工作正常。但是当我跑步openssl_random_pseudo_bytes
或mcrypt_create_iv
经常看到相同的哈希时。
$2y$08$$$$$$$$$$$$$$$$$$$$$$.UrC6Lo4LNk8iLmoi25KEoVzHHTK7tNC
我看了上面的哈希值 10 次。
当我使用 mt_srand
哈希时,它根本不会改变。
我在另一个更简单的包装器中测试相同的函数,在这里找到它们,它们的行为与我上面描述的相同。
我是散列和crypt
. 我很困惑,我应该实际使用什么?