diff --git a/phpBB/phpbb/console/command/fixup/update_hashes.php b/phpBB/phpbb/console/command/fixup/update_hashes.php index 05bef48c92..b1ffa2159b 100644 --- a/phpBB/phpbb/console/command/fixup/update_hashes.php +++ b/phpBB/phpbb/console/command/fixup/update_hashes.php @@ -101,6 +101,14 @@ class update_hashes extends \phpbb\console\command\command while ($row = $this->db->sql_fetchrow($result)) { $old_hash = preg_replace('/^\$CP\$/', '', $row['user_password']); + + // If stored hash type is unknown then it's md5 hash with no prefix + // First rehash it using $H$ as hash type identifier (salted_md5) + if (!$this->passwords_manager->detect_algorithm($old_hash)) + { + $old_hash = $this->passwords_manager->hash($old_hash, '$H$'); + } + $new_hash = $this->passwords_manager->hash($old_hash, [$this->default_type]); $sql = 'UPDATE ' . USERS_TABLE . " diff --git a/phpBB/phpbb/cron/task/core/update_hashes.php b/phpBB/phpbb/cron/task/core/update_hashes.php index 61ed0d0501..78221bb35f 100644 --- a/phpBB/phpbb/cron/task/core/update_hashes.php +++ b/phpBB/phpbb/cron/task/core/update_hashes.php @@ -107,6 +107,14 @@ class update_hashes extends \phpbb\cron\task\base while ($row = $this->db->sql_fetchrow($result)) { $old_hash = preg_replace('/^\$CP\$/', '', $row['user_password']); + + // If stored hash type is unknown then it's md5 hash with no prefix + // First rehash it using $H$ as hash type identifier (salted_md5) + if (!$this->passwords_manager->detect_algorithm($old_hash)) + { + $old_hash = $this->passwords_manager->hash($old_hash, '$H$'); + } + $new_hash = $this->passwords_manager->hash($old_hash, [$this->default_type]); // Increase number so we know that users were selected from the database