嗨,有人可以告诉我如何在crypt()
中使用php 5.6
和密码_hash吗?
因为我试过并且不断给我这个错误
注意:crypt():没有指定salt参数。
您必须使用随机生成的salt和强哈希函数来生成安全哈希。
答案 0 :(得分:3)
使用非常简单,以下示例总结:
// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_DEFAULT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
password_hash()
函数实际上是crypt()
函数的包装器,用于处理诸如生成安全盐之类的困难部分,并使其能够在未来证明。所以不需要直接调用crypt()。
答案 1 :(得分:1)
函数声明如下:
string crypt ( string $str [, string $salt ] )
但the documentation注意到这一点:
salt
参数是可选的。但是,crypt()
会在没有salt
的情况下创建一个弱密码。如果没有它,PHP 5.6或更高版本会引发E_NOTICE
错误。确保指定足够强的盐以提高安全性。
也就是说,如果你想继续使用没有盐的函数(这将是愚蠢的),或者使用盐,你将不得不忽略该通知。
但请注意,文档继续说:
password_hash()
使用强哈希,生成强盐,并自动应用适当的回合。password_hash()
是一个简单的crypt()
包装器,与现有的密码哈希兼容。 鼓励使用password_hash()
。
(最后一个重点是我的。)