【问题标题】:What function does Bonfire use to hash passwords?Bonfire 使用什么函数来散列密码?
【发布时间】:2014-08-15 09:43:58
【问题描述】:

我不知道这是 CI 还是 Bonfire 特定的问题,我意识到这不是特定的编程问题,但它肯定会阻碍我在该环境中编写代码的能力。

bonfire/modules/users/controllers/users/ 下是一个控制器,它使用一个名为login() 的漂亮函数。我使用该函数和框架函数 register() 来处理我所有的登录/注册需求,但现在当我必须从头开始登录 Facebook 时,我需要比较 2 个密码。

问题是我无法比较密码,因为它们是由一些添加了盐的时髦怪异散列进行散列的,我不知道它们使用什么,而且找不到答案!

我的数据库存储像$2a$08$QuJPuhhg.HYh8o7ybGJ1quFe1rvcIo/dRIPJ.iaSbHm5P2qAbPTNy 这样的哈希值在这种情况下,id 被存储为用户的密码。

那么框架使用什么函数来散列密码?

【问题讨论】:

    标签: php codeigniter bonfire


    【解决方案1】:

    CI Bonfire 使用 phpass (读作“pH pass”) 框架来对密码进行哈希处理。

    当您 createupdate 用户时,bonfire 使用 Auth::hash_password() 方法(在后台加载 phpass 框架!)来创建哈希密码。

    示例

    $password = $this->auth->hash_password('password');
    $hash = $password['hash'];
    $iterations_used = $password['iterations'];
    

    因此,您可以手动使用该方法使用相同的算法对任何字符串进行哈希处理。

    Auth 库中还有一个 check_password() 方法,它比较两个参数:输入字符串 (password) 作为第一个参数,哈希密码 (hash) 作为第二个参数.这可能有助于比较目的。

    示例

    if ($this->auth->check_password('password to check', 'HashedPassword'))
    {
        // The passwords match
        ...
    }
    

    如果密码和哈希匹配,则返回bool(true),否则返回false

    这些方法也记录在Bonfire user guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-27
      • 2012-06-10
      • 1970-01-01
      • 2021-08-25
      • 2013-06-29
      • 1970-01-01
      • 2012-04-19
      • 2010-10-11
      相关资源
      最近更新 更多