2013-05-30 41 views
2

我想在PHP和共享服务器上使用bcrypt哈希值我将使用的是普通的Unix,我无法在其上安装任何东西。我的PHP的版本是5.3或5.2,而不是5.5,使用password_hash的这段代码将不起作用。在5.2或5.3上的bcrypt

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

即使有很多关于bcrypt的谈话,我没有找到关于它的任何明确的命令或代码示例。关于crypt命令的问题,php.net有一个page,这对于初学者来说非常安静。 所有我想要的是实现这样的功能:

bcrypt($password,$salt) 

有没有简单的命令(不几十码的包括循环)这样做呢? 如果没有,是否有任何漏洞被纯化的代码下载?

在此先感谢

+2

首先,请停止使用PHP 5.2 - 它在两年前宣布报废,并且有几个未修复的安全漏洞。 – Spudley

+0

@Spudley称他使用共享主机。通常你不能更新你的自己 – MKroeders

+5

@Hendriq - 那么你应该使用一个不同的托管公司;任何托管公司仍然迫使他们的用户坚持5.2是疏忽。这意味着他们在两年内没有对PHP版本进行任何安全补丁,而且他们可能也过时地修补了服务器上的其他软件。 – Spudley

回答

3

有可用来允许PHP 5.3和5.4,以使用新的5.5 password_xxx()函数库。您可以下载from here on Github

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

该库是而不是与PHP 5.2兼容,因为不再支持5.2(并且在两年多时间内还没有被支持)。如果你使用5.2,你应该紧急考虑升级。

请注意,即使在PHP 5.3上,您也需要使用大于5.3.7的版本,因为它依赖于该修补程序版本中修复的功能。 (当你运行它时,库会测试它)。

如果你绝对无法升级你的PHP的版本与此库兼容,那么下一个最好的选择是使用由同一作者写的旧密码管理器库,称为PasswordLib

+0

谢谢,但我找不到有关bcrypt的任何内容:https://github.com/ircmaxell/PHP-PasswordLib/blob/master/lib/PasswordLib/Hash/Hash.php – amerza

+0

[文档状态](https:// github .com/ircmaxell/PHP-PasswordLib#规范),它支持BCrypt(又名blowfish),并且它是默认的散列类型,并且已经使用了它,我可以证明它确实会生成bcrypt散列。如果你正在阅读源代码,它有一个名为'Blowfish'的类,可能是相关的。 – Spudley