(PHP5<;5.5.0)的密码_hash()的替代方案是什么?

(PHP5<;5.5.0)的密码_hash()的替代方案是什么?,php,security,hash,passwords,php-password-hash,Php,Security,Hash,Passwords,Php Password Hash,根据手册:此功能可用于(PHP5>=5.5.0) 在搜索其他方法后,我从这里找到了这个简单的函数: 我可以在使用之前使用函数来管理我的代码,但我的问题是关于上述替代代码是否安全,或者在旧版本的PHP中是否有替代代码?对于5.3.7但在5.5.0之前的版本,你会讨厌PHP 5.2每月1美元的托管计划,你可以在上找到密码散列的实现,该实现是由开发现在在PHP 5.5.0+中实现的版本的同一个人编写的,该版本有意提供向后兼容性crypt()将生成密码哈希。。。您不需要生成salt,但这是该函数中所有额

根据手册:此功能可用于
(PHP5>=5.5.0)

在搜索其他方法后,我从这里找到了这个简单的函数:


我可以在使用之前使用
函数来管理我的代码,但我的问题是关于上述替代代码是否安全,或者在旧版本的PHP中是否有替代代码?

对于<5.3.7的PHP版本,我建议:

对于大于等于5.3.7的PHP版本,请使用:

生成自己的盐需要很多知识,因为一种好的、合适的盐需要大量的熵。在PHP中生成这个salt很麻烦,这就是为什么您最终通常依赖其他资源来为您提供这个字符串,例如
/dev/uradom
openssl\u random\u pseudo\u bytes
。相信我,没有认真的研究和考虑,这不是你想自己尝试的事情


建议使用新的
password.*
API,但如果您需要支持旧版本的PHP,则可能会出现问题,而PHPass就是其中的一部分。对于PHP>5.3.7但在5.5.0之前的版本,你会讨厌PHP 5.2每月1美元的托管计划,你可以在上找到密码散列的实现,该实现是由开发现在在PHP 5.5.0+中实现的版本的同一个人编写的,该版本有意提供向后兼容性

crypt()
将生成密码哈希。。。您不需要生成salt,但这是该函数中所有额外的内容,请参见Openwall(PHPass)。它可以抵御许多常见的用户密码攻击。+1了解更多信息,因为您的答案是重复的:)谢谢,我尝试了password_compact,但它也有一个必需的条件,这在使用PHP5.4的托管服务器上是找不到的,因此phppass工作起来很有魅力。
function generateHash($password) {
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
        $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
        return crypt($password, $salt);
    }
}