2011-08-14 37 views
3

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

我使用PHP开发的API。我以前的,我想从迁移API的版本是建立使用Rails 3

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

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

我该如何在PHP(Codeigniter)中执行相同的操作,以便用户可以继续使用旧密码?

感谢所有帮助!

回答

1

我认为你可以使用crypt函数与Blowfish算法: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现在应该包含的哈希值。

基本上以使用吹鱼alogrithm,盐需要是这种格式:$ 2A $ [2位成本参数] $ [22位的字母数字字符串]

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

if (CRYPT_BLOWFISH == 1) { 
    echo 'Blowfish:  ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n"; 
} 
+0

好听起来很有趣。不幸的是,似乎很复杂,我不知道如何“复制”Bcrypt技术。是否有可能帮助医生将上述内容“转换”为mcrypt? –

+0

这工作完美!谢谢! –

+0

原来,它在我的本地机器上完美工作,但在服务器上,从crypt返回的哈希是不同的。怎么来的? –

1

我不知道它是如何做到的,但看看源为Tank Auth,它使用bcrypt。我认为如果系统中存在内置库,并且在必要时可以回退到包含的版本,就足够智能。