PHP中的Ruby bcrypt密码检索


Ruby bcrypt password retrieval in PHP

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

有没有一种方法可以在PHP中检索这个Ruby创建的字段?

验证

我所说的"检索"是指我需要使用PHP/Yii应用程序来验证用户登录,以使用由Rails应用程序中的bcrypt-ruby创建的密码字段来解释DB表。

我相信这会解决您的问题:

$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!'; }

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

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

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

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

您应该了解PHP.net 的密码函数

在这里,如果你在Ruby中正确地使用了bcrypt,你应该能够得到你想要的东西。