Bonfire使用什么功能来散列密码?

时间:2014-08-15 09:43:58

标签: php codeigniter bonfire

我不知道这是CI还是篝火特定的问题,我发现它不是一个特定的编程问题,但它确实阻碍了我在该环境中编码的能力。

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

问题是我无法比较密码,因为它们被添加了盐的一些时髦的奇怪哈希所散播,我无法弄清楚他们使用了什么,答案无处可寻!

我的数据库存储像$2a$08$QuJPuhhg.HYh8o7ybGJ1quFe1rvcIo/dRIPJ.iaSbHm5P2qAbPTNy这样的哈希我知道我不应该比较密码但在这种情况下我需要比较密码,因为我正在登录Facebook,我需要查看具有该ID的用户是否已经存在一个数据库。在这种情况下,id存储为用户的密码。

那么框架用来散列密码的功能是什么?

1 个答案:

答案 0 :(得分:2)

CI Bonfire使用 phpass (发音为" pH pass")框架来散列密码。

当您 create update 用户时,篝火使用Auth::hash_password()方法(在引擎盖下加载phpass框架) !)创建哈希密码。

示例

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

因此,您可以手动使用该方法使用相同的算法散列任何字符串。

还有 Auth 库中的check_password()方法,该方法比较两个参数:输入字符串(password)作为第一个参数和散列密码({ {1}})作为第二个。它可能有助于比较目的。

示例

hash

如果密码和哈希匹配,则返回if ($this->auth->check_password('password to check', 'HashedPassword')) { // The passwords match ... } ,否则返回bool(true)

这些方法也记录在Bonfire user guide