【问题标题】:PHP and Bcrypt [duplicate]PHP和Bcrypt [重复]
【发布时间】:2011-10-26 17:39:53
【问题描述】:

可能重复:
How do you use bcrypt for hashing passwords in PHP?

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

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

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

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

感谢大家的帮助!

【问题讨论】:

    标签: ruby-on-rails codeigniter bcrypt


    【解决方案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";
    }
    

    【讨论】:

    • 好吧听起来很有趣。不幸的是,我不确定如何“复制” Bcrypt 技术似乎很复杂。您是否可以帮助 med 将上述内容“转换”为 mcrypt?
    • 这非常有效!谢谢!
    • 原来它在我的本地机器上完美运行,但在服务器上,从 crypt 返回的哈希值不同。怎么会?
    • 我认为河豚算法可能在您的服务器上不可用。如果您使用的是 PHP 5.3 及更高版本,则可以使用河豚算法。否则,我已经编辑了我的帖子以确定河豚是否可用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      相关资源
      最近更新 更多