@inviziblll

Как перенести пользователей из Magento CMS с их паролями?

Необходимо перенести список пользователей из Magento в Bitrix. Есть CSV файл со списком пользователей выгруженных из базы данных. Хотелось бы перенести пользователей со старыми паролями. Для этого нужно получить из строки с зашифрованным паролем его хеш и дальше сохранить в Битрикс.

Загвоздка в том что я не знаю по какому принципу Magento кодирует пароли, где в строке собственно сам хеш пароля, а где дополнительные символы ( “соль”) которые можно обрезать?

Битрикс кодирует пароль в md5 а затем добавляет к полученной строке “соль”, возможно у Magento такой же принцип. Подскажите по какому принципу в Magento формируются хеш паролей у пользователей.
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergoslav_0
@sergoslav_0
PHP / Magento / Laravel
Если речь идет про Magento1, то функция валидации находится в Mage_Core_Model_Encryption:
/**
     * Hash a string
     *
     * @param string $data
     * @return string
     */
    public function hash($data)
    {
        return md5($data);
    }

    /**
     * Validate hash against hashing method (with or without salt)
     *
     * @param string $password
     * @param string $hash
     * @return bool
     * @throws Exception
     */
    public function validateHash($password, $hash)
    {
        $hashArr = explode(':', $hash);
        switch (count($hashArr)) {
            case 1:
                return hash_equals($this->hash($password), $hash);
            case 2:
                return hash_equals($this->hash($hashArr[1] . $password),  $hashArr[0]);
        }
        Mage::throwException('Invalid hash.');
    }

То есть если пароль представлен как два хэша разделенных запятой, то первый - соль, а второй md5-хэш. Иначе это просто md5 хэш.
Соль генерируется рандомно для каждого пользователя, так что если у вас случай с солью, то скорее всего придется допиливать код битрикс чтобы такие пароли продолжали работать. (Хотя я с битрикс никогда не имел дело, может он точно также делает?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы