2

我想在 PHP 中使用 bcrypt 散列,我将使用的共享服务器是普通的 Unix,我无法在它们上安装任何东西。我的 php 版本是 5.3 或 5.2 而不是 5.5,并且使用 password_hash 的这段代码将不起作用。

$password = '123456';
$options = array(
    'cost' => 7,
    'salt' => 'BCryptRequires22Chrcts',
);
$hash=password_hash($password, PASSWORD_BCRYPT, $options);

尽管有很多关于 bcrypt 的讨论,但我没有找到任何明确的命令或代码示例。php.net 有一个关于 crypt 命令的页面,这对初学者来说非常令人困惑。我想要的只是实现这样一个功能:

bcrypt($password,$salt)

有没有简单的命令(不是几十个代码,包括循环)来做到这一点?如果没有,是否有任何漏洞净化代码可供下载?

提前致谢

4

2 回答 2

3

有一个库可让 PHP 5.3 和 5.4 使用新的 5.5password_xxx()函数。

你可以在 Github 上从这里下载。

这个库是由在 PHP 5.5 中编写实际内置password_xxx()函数的同一位 PHP 核心开发人员编写的,因此它是 100% 兼容的。只需将它包含在您的代码中,PHP 5.3 和 5.4 就可以像 PHP 5.5 一样使用这些函数。

该库与 PHP 5.2兼容,因为不再支持 5.2(现在已经两年多没有支持了)。如果您使用的是 5.2,则应该紧急考虑升级。

另请注意,即使在 PHP 5.3 上,您也需要使用高于 5.3.7 的版本,因为它依赖于该补丁版本中修复的功能。(当您运行它时,该库将对此进行测试)。

如果您绝对不能将您的 PHP 升级到与该库兼容的版本,那么下一个最佳选择是使用由同一作者编写的旧密码管理器库,称为PasswordLib

于 2013-05-30T12:18:06.193 回答
0

不确定 5.2,但对于 5.3.7+,您可以包含一个简单的文件来添加此 PHP5.5 功能。

PHP 5.3.7 及更高版本有一个兼容包,因此您无需等待 5.5 版本即可使用此功能。它以单个 php 文件的形式出现: https ://github.com/ircmaxell/password_compat

于 2013-05-30T12:17:45.147 回答