我正在使用 PHP 开发 API。我想要从中迁移的 API 的先前版本是使用 Rails 3 构建的。
我只有一个问题。用户存储的密码使用以下技术加密。
BCrypt::Engine.hash_secret(password, user.password_salt);
我怎样才能在 PHP(Codeigniter)中做同样的事情,以便用户可以继续使用他们的旧密码?
感谢所有帮助!
我正在使用 PHP 开发 API。我想要从中迁移的 API 的先前版本是使用 Rails 3 构建的。
我只有一个问题。用户存储的密码使用以下技术加密。
BCrypt::Engine.hash_secret(password, user.password_salt);
我怎样才能在 PHP(Codeigniter)中做同样的事情,以便用户可以继续使用他们的旧密码?
感谢所有帮助!
我认为您可以将 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";
}
我不确定它是如何完成的,但请查看Tank Auth的来源,它使用 bcrypt。我认为如果系统上存在内置库并在必要时回退到包含的版本,则使用它足够聪明。