如何在php 5.6中执行crypt和password_hash

时间:2015-12-14 17:35:43

标签: php crypt password-hash

嗨,有人可以告诉我如何在crypt()中使用php 5.6和密码_hash吗? 因为我试过并且不断给我这个错误

  

注意:crypt():没有指定salt参数。

您必须使用随机生成的salt和强哈希函数来生成安全哈希。

2 个答案:

答案 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()

(最后一个重点是我的。)