diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/PasswordItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/PasswordItem.php
index 7caa26f..96ed2b4 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/PasswordItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/PasswordItem.php
@@ -46,7 +46,7 @@ public function preSave() {
     $entity = $this->getEntity();
 
     // Update the user password if it has changed.
-    if ($entity->isNew() || (strlen(trim($this->value)) > 0 && $this->value != $entity->original->{$this->getFieldDefinition()->getName()}->value)) {
+    if (!$entity->is_hashed && ($entity->isNew() || (strlen(trim($this->value)) > 0 && $this->value != $entity->original->{$this->getFieldDefinition()->getName()}->value))) {
       // Allow alternate password hashing schemes.
       $this->value = \Drupal::service('password')->hash(trim($this->value));
       // Abort if the hashing failed and returned FALSE.
diff --git a/core/modules/user/src/Plugin/migrate/destination/EntityUser.php b/core/modules/user/src/Plugin/migrate/destination/EntityUser.php
index beda7c8..31d1f7b 100644
--- a/core/modules/user/src/Plugin/migrate/destination/EntityUser.php
+++ b/core/modules/user/src/Plugin/migrate/destination/EntityUser.php
@@ -8,6 +8,7 @@
 namespace Drupal\user\Plugin\migrate\destination;
 
 use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Field\FieldTypePluginManagerInterface;
@@ -111,6 +112,17 @@ public function import(Row $row, array $old_destination_id_values = array()) {
   /**
    * {@inheritdoc}
    */
+  protected function save(ContentEntityInterface $entity, array $old_destination_id_values = array()) {
+    if (!$this->password) {
+      $entity->is_hashed = TRUE;
+    }
+
+    return parent::save($entity, $old_destination_id_values);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   protected function processStubRow(Row $row) {
     parent::processStubRow($row);
     // Email address is not defined as required in the base field definition but
