I have migrated only customers from Magento to Magento 2.2.3 and customers migrated successfully and listed properly in the admin section.

But when I try to login with the Magento 1 password I am not able to login.

So as I check in database the old passwords are stored differently than the Magento 2 passwords.

Here's a screenshot of the database table "customer_entity":

enter image description here

Basically I have found that when customer created from Magento 2 frontend there is a larger string after the first colon : and migrated passwords have only two character after the colon :.


As you might know, Magento 2 has changed the encryption model. It uses a new method of hashing passwords sha256(), while Magento 1 uses MD5 which produces hash values of length n=128.

However, one thing to note that Magento 2 still supports both old md5() and sha256(). That means you can have both password_hash in your Magento 2.

The data migration tool takes advantage of such backward compatibility in Magento to automatically migrate Customer password from Magento 1 to Magento 2. So your customers can use their md5() based password without the need to reset their passwords after migration. And the (migrated) customer passwords in Magento 2 remain to be 128-bit (16-byte) MD5 hashes. Such passwords will be changed to sha256() hash algorithm if:

Your users change the password themselves on the new Magento 2 instance (after migration). Or, You manually upgrade your password_hash using md5() to sha256() after migration, by running the command: php -f bin/magento customer:hash:upgrade.

if that'not work for you then

Just Empty the table (TRUNCATE) " customer_entity_varchar "

  • Thanks, This command works for me php -f bin/magento customer:hash:upgrade – Jalpesh Patel Apr 25 '18 at 10:17
  • I have done the above methods and that does not work for me. Any other suggestion? Iam using magento 2.2.4 and upgrade is from – Divya Muralidharan Jun 27 '18 at 4:20
  • @DivyaMuralidharan is there any error you get when you perform hash:upgrade command in SSH? – Jalpesh Patel Jun 27 '18 at 4:59
  • @Jalpesh Yes. I got this error " [ReflectionException] Class Magento\Eav\Model\Attribute\Data\Datetime does not exist" – Divya Muralidharan Jun 27 '18 at 5:46
  • @DivyaMuralidharan do you have any custom attribute in magento which type is datetime?? – Jalpesh Patel Jun 27 '18 at 6:44

After migrating database from magento1 to magento2, customer login problem occurs, to solve that problem just go to a file name encryptor.php in the vendor folder (Path is below) vendor\magento\framework\Encryption\Encryptor.php and change isValidHash() function like below.

        public function isValidHash($password, $hash)
          try { 


           foreach ($this->getPasswordVersion() as $hashVersion) {

            if ($hashVersion == '0') {

                $recreated = current(explode(':', $hash));

            }else if ($hashVersion === self::HASH_VERSION_ARGON2ID13) {
                $recreated = $this->getArgonHash($password, $this->getPasswordSalt());
            } else {

                $recreated = $this->generateSimpleHash($this->getPasswordSalt() . $password, $hashVersion);

            $hash = $this->getPasswordHash();
            error_log('password changing technique ======');
    } catch (\RuntimeException $exception) {
        //Hash is not a password hash.
        $recreated = $this->hash($password);

    return Security::compareStrings(

the above change wont cause any issue because once user login with above method, magento2 will change the password hash to its proper password format and you can see difference in customer_entity table in magento2 database.

  • Well, this works, but it's a very bad practice to edit files in /vendor folder – srokatonie Dec 19 '19 at 13:59
  • 1
    Srokatonie I appreciate your comment but there is no other option available till now and its a quick fix if you want to try. – Shubhanshu Jan 9 '20 at 5:50
  • It showing error like Fatal error: Uncaught Error: Undefined class constant 'HASH_VERSION_ARGON2ID13' vendor\magento\framework\Encryption\Encryptor.php on line 215 – Kowsigan Atsayam Jan 31 '20 at 14:24
  • Kowsigan Atsayam which version of magento you are using actually it worked with magento 2.3 but stiil please check for this line in your file public const HASH_VERSION_ARGON2ID13 = 2; if it is not present please add it its a constant or else please copy your Encryptor.php file here let me check. – Shubhanshu Feb 1 '20 at 5:34
  • 1
    You, my man; have saved a life today. Mobsters wanted to hang me for not gettign the site up today but now, because of your extreme knowledge and understanding I may live to fight another day. – rupi Jul 8 '20 at 18:46

I have created my own extension for customer migration and that was work perfectly with my Magento version: 2.2.4.

My logic: Taking Magento1 password and appending ":0" before inserting into Magento2 customer table.

Let me know if you need more info for same, I am happy to help the community!

  • Is it possible you can share your migration extension and/or logic? – Dominic Xigen Jul 11 '19 at 13:03
  • please send the link of your extension – Kowsigan Atsayam Jan 31 '20 at 12:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.