PHP问题:密码\u哈希函数无法生成salt

PHP问题:密码\u哈希函数无法生成salt,php,hash,password-encryption,Php,Hash,Password Encryption,我正在创建一个用户注册服务提供商,我正在使用password_散列函数来散列提供的用户密码。下面是用于创建哈希字符串的代码部分: public function generateHash($string) { return password_hash($string, PASSWORD_BCRYPT); } 正如我在PHP手册中所理解的,我们不应该生成salt,而是让password_hash函数处理它,以提高安全性。但是,当我尝试创建新用户时,会收到以下警告:

我正在创建一个用户注册服务提供商,我正在使用password_散列函数来散列提供的用户密码。下面是用于创建哈希字符串的代码部分:

public function generateHash($string)
    {
        return password_hash($string, PASSWORD_BCRYPT);
    }
正如我在PHP手册中所理解的,我们不应该生成salt,而是让password_hash函数处理它,以提高安全性。但是,当我尝试创建新用户时,会收到以下警告:

警告:密码\u hash():无法生成salt

应用程序创建用户,但由于上述问题,不会生成哈希,并且数据库中的密码始终为空

我在开发环境中使用的是PHP 7.0.4/Zend Server


如果有人能为我指出正确的方向,我将不胜感激。事实证明,我对当前的php7安装有问题。我切换到PHP5.6,一切正常。

您使用的是哪种操作系统?空密码仍将返回哈希值。通过搜索,PHP源中生成此错误消息的唯一位置是。查看一下,您可以看到PHP尝试生成随机性的各种方式。我将开始对这些问题进行故障排除。@jszobody我正在使用上述指定PHP版本的Mac OS X EL Capitan。看起来这是一个与开发环境相关的问题,因为random_bytes()函数会抛出一个异常,并显示“无法打开源代码设备”错误消息。我需要挖掘更多有趣的东西。用谷歌搜索“无法打开源代码设备”错误会发现有关mcrypt问题的信息,或者无法读取
/dev/uradom
。不知道如何在这一点上帮助你。虽然这很好,但仍然不知道问题到底是什么并不能真正帮助任何人
:-/
,如果你能发现原因(可能是服务器上一些模糊的PHP访问问题),你能将其添加到你的答案中吗?干杯。调用此函数。它应该抛出一个异常,解释为什么它不能收集随机数据来生成salt。