Как перейти от шифрования sha256 к bcrypt для php?

Для входа:

$rows = $sql->fetch(PDO::FETCH_ASSOC); $us_id = $rows['id']; $us_pass = $rows['password']; $us_salt = $rows['password_salt']; $status = $rows['attempt']; $saltedPass = hash('sha256', "{$password}{$this->passwordSalt}{$us_salt}"); 

Для регистрации:

 $randomSalt = $this->rand_string(20); $saltedPass = hash('sha256', "{$password}{$this->passwordSalt}{$randomSalt}"); 

Как этот метод шифрования sha256 можно преобразовать в bcrypt?

Хеширование паролей с помощью bcrypt

Если вы используете PHP 5.5 или новее, вы можете использовать встроенную функцию password_hash() с параметром $algo установленным в PASSWORD_BCRYPT для создания хэшей bcrypt. Вы можете использовать это так:

 $options = array('cost' => 11, 'salt' => 'my_salt'); $hash = password_hash("my_secret_password", PASSWORD_BCRYPT, $options); 

миграция

Невозможно выполнить массовую миграцию с sha256 на bcrypt, потому что вам нужны исходные данные незашифрованного текста (пароль), которые недоступны.

Как правило, сайты выполняют ступенчатое преобразование, в котором вы конвертируете пользователей, когда они выполняют успешные логины. Например:

  1. создать поле в вашей базе данных для пароля имеет тип, sha256 или bcrypt
  2. при регистрации, подтвердите пароль, используя тип в базе данных
  3. если sha256 и успешно, создайте новую запись bcrypt, используя введенный пароль, сохраните это и обновите тип пароля для bcrypt. При следующем входе в систему bcrypt будет использоваться для проверки.