其中bcrypt的实施建议PHP 5.3?(Which implementation of bcry

2019-08-18 02:03发布

好了,我终于明白bcrypt,它是如何工作的,以及如何将其存储在数据库中,所以我几乎好到哪里去。 现在的问题是采摘实施bcrypt与PHP要使用的5.3

我要疯了看着所有的不同的解决方案,我不知道哪一个是最值得推荐的,最安全的使用,所以我再次转向你们。

下面是我发现的那些:

1) https://gist.github.com/marcoarment/1053158

2) http://www.openwall.com/phpass/

3) https://stackoverflow.com/a/6337021/869849

4)......别的东西吗?

这些是可以互换的,还是他们产生不同的哈希? 我想认为,既然它们都是“bcrypt”,他们会产生相同的结果,但我不知道(我测试1)2)以上,他们似乎是因为所产生的散列互换1)检查出上2)

因此,这是PHP推荐的解决方案5.3

Answer 1:

最好的解决办法:你应该使用正在内置的PHP 5.5的密码库。 他们已经发布了PHP 5.3和5.4称为向后兼容的版本password_compat 。 但是请注意,您需要5.3.7或更高版本。 有与bcrypt之前5.3.7一个安全问题,这意味着新图书馆将无法正常工作。

如果你在之前的5.3.7版本,那么下一个最好的选择是密码库由同一作者。 但我建议升级PHP替代将是更好的选择。

安装

这两个库可以简单地通过下载它们,将它们复制到您的站点文件夹,包括在你的代码它们的主要文件来安装-即require('password.php');

通过作曲家安装也是一种选择,如果你正在使用它。

使用方法 (假设你有password_compat去):

要创建一个密码:

$hash = password_hash($password, PASSWORD_BCRYPT);

要验证密码:

if (password_verify($password, $hash)) {
    /* Valid */
} else {
    /* Invalid */
}

而这一切基本上你需要知道的。 该库处理所有为你的其他细节,如腌制密码等。

[编辑]如果您需要更改算法“成本”,按您的评论,然后附加参数添加到password_hash()调用指定它,就像这样:

password_hash($password, PASSWORD_BCRYPT, array("cost" => 11));

完整文档,请我上面链接进入下载页面。

有关使用password_compat库的真正好处是,它是专为具有相同的API和功能被内置到PHP作为标准在PHP 5.5。 因此,如果你使用password_compat当你在PHP 5.3或5.4,当您移动到PHP 5.5你已经在你的系统中正确的代码,以使用新的内置密码功能。 唯一的区别是,你不会需要include图书馆。



Answer 2:

如果你正在尝试更新到PHP 5.5,请在迁移之前阅读本手册有,应该在提升阅读非常有趣的点

有5.3〜5.4和发行说明落后的不兼容页面的变化

http://php.net/manual/en/migration54.incompatible.php



文章来源: Which implementation of bcrypt is recommended for PHP 5.3?