4

可能重复:
如何在 PHP 中使用 bcrypt 对密码进行哈希处理?

我正在使用 PHP 开发 API。我想要从中迁移的 API 的先前版本是使用 Rails 3 构建的。

我只有一个问题。用户存储的密码使用以下技术加密。

BCrypt::Engine.hash_secret(password, user.password_salt);

我怎样才能在 PHP(Codeigniter)中做同样的事情,以便用户可以继续使用他们的旧密码?

感谢所有帮助!

4

2 回答 2

1

我认为您可以将 crypt 函数与河豚算法一起使用:http: //php.net/manual/en/function.crypt.php

另一种选择是使用 mcrypt:http ://www.php.net/manual/en/ref.mcrypt.php

编辑:示例

这是我要做的:

$hashedPassword = crypt('password', '$2a$11$abcd');

像这样使用地穴:

hash = crypt(password, salt);

$hashedPassword 现在应该包含哈希。

基本上为了使用吹鱼算法,盐需要采用这种格式:$2a$[2位成本参数]$[22位字母数字字符串]

要确定您的服务器上是否有河豚:

if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
于 2011-08-14T09:59:56.010 回答
1

我不确定它是如何完成的,但请查看Tank Auth的来源,它使用 bcrypt。我认为如果系统上存在内置库并在必要时回退到包含的版本,则使用它足够聪明。

于 2011-08-14T10:39:55.543 回答