crypt()函数在PHP5.4.2+Ubuntu12.04 LTS上不起作用?我错过了任何安装吗?

crypt()函数在PHP5.4.2+Ubuntu12.04 LTS上不起作用?我错过了任何安装吗?,php,ubuntu,cryptography,bcrypt,password-hash,Php,Ubuntu,Cryptography,Bcrypt,Password Hash,我已经安装了 ubuntu堆栈12.04 LTS PHP5.4.2最新版本 河豚隐窝 用于php的mcrypt 博士后 apache2 在我的mac mini上作为模拟服务器 在我的开发计算机上,我使用的是XAMPP,它是用Postgres修改的mySQL,这样我的模型就有了一个几乎完全相同的堆栈 这是我的加密代码: public function hash($string, $salt){ $hash = crypt($string, '$2y$10$' . $salt . '

我已经安装了

ubuntu堆栈12.04 LTS PHP5.4.2最新版本 河豚隐窝 用于php的mcrypt 博士后 apache2 在我的mac mini上作为模拟服务器

在我的开发计算机上,我使用的是XAMPP,它是用Postgres修改的mySQL,这样我的模型就有了一个几乎完全相同的堆栈

这是我的加密代码:

public function hash($string, $salt){
        $hash = crypt($string, '$2y$10$' . $salt . '$');
        return $hash;
    }
我将传入我希望加密的字符串和随机生成器生成的salt

输出 在我的开发计算机上,我能够使用crypt函数成功地散列我的密码,并使用该函数进行salt

$salt->HGhfwjgr0lGa31Ya $hash->$2y$10$$$$$T8RU0J8P7ULN2QIAEGBSIVTQMIIC/a

然而,在我的模拟服务器上,输出是完全不同的!它基本上只是把盐塞进待加密字符串的中间

$salt->HGhfwjgr0lGa31Ya $hash->$2y$10$HGhfwjgr0lGa31Ya$


我是加密新手,希望善良的灵魂能帮助我!谢谢

对于PHP5.4,您应该使用它,当您升级到PHP5.5+时,它也将允许您的脚本继续工作,但没有该库。有关用法,请参阅。此外,在开发服务器上,如果使用salt HGhfwjgr0lGa31Ya,则上面列出的哈希值是不正确的。这个盐应该包含在散列中。@Mike我不太明白盐应该包含在散列中的意思。salt将作为一个参数传入,并在哈希$hash=crypt$string、$2y$10$HGhfwjgr0lGa31Ya$@Mike之前进行连接,应该是这样的吗$2y$10$HGhfwjgr0lGa31Ya$T8RU0J8P7ULN2QIAEGBSIVTQMIIC/a@Mike谢谢集成password_compat实际上解决了整个问题,从我所读到的内容来看,它还解决了针对bcrypt的PHPV5.3.6中发现的安全漏洞。