PHP中的Ruby bcrypt密码检索

时间:2012-02-17 00:06:34

标签: php ruby bcrypt

我有一个用户auth表,其中包含几千条包含由bcrypt-ruby加密的密码字段的记录。我已将应用程序移植到PHP / Yii中,需要使用此字段进行身份验证。

有没有办法在PHP中检索这个Ruby创建的字段?

验证

通过“检索”,我的意思是我需要使用PHP / Yii应用程序验证用户登录,以使用Rails应用程序中的bcrypt-ruby创建的密码字段来解释数据库表。

2 个答案:

答案 0 :(得分:4)

我相信这可以解决你的问题:

$database_record = "something";   // grab from database
$user_input = 'unicorns';         // take real one from post data
$password = crypt($user_input, '$2a$10$usesomesillystringforsalt$');
// key piece above is the second number, that is the 'work' factor

if (crypt($user_input, $database_record) == $password) {
   echo "Password verified!";
}
else {
    echo 'failed!'; }

这假设您使用BCrypt::Password.create(desired_pass)在Ruby中存储它们,并通过BCrypt::Password.new(database_entry) == form_input验证登录。

此外,要在数据库中创建新密码(即新用户),请存储

的结果

$password = crypt($user_input, '$2a$10$usesomesillystringforsalt$');

最后,请确保始终使用正确的成本因素。具有不同成本因素的相同密码将不相等。 bcrypt-ruby中的默认成本因子是10(当前版本,3.0.1)。

答案 1 :(得分:0)

您应该查看PHP.net

处的加密函数

如果你在Ruby中正确地遵循了bcrypt,那么你应该能够达到你想要的效果。