2015-05-06 3 views
2

Приветствую, надеюсь, я могу быть направлен в правильном направлении и получить определенную ясность, поскольку меня теперь путают.Шифрование паролей Использование базы данных opencart для входа на сайт

У меня есть веб-сайт, который также имеет opencart (версия 1.5.6.1), приложенные к ним, чтобы выглядеть одинаково. Я пришел к тому моменту, когда мне нужно, чтобы пользователи регистрировались на сервисах на моем веб-сайте, но я не хочу, чтобы пользователь создавал два набора данных, один для магазина и другой для моих сервисов. Я провел исследование и обнаружил, что могу просто добавить информацию в базу данных opencart, а не иметь две независимые базы данных.

Все шло хорошо, пока я не пришел к шифрованию пароля, OpenCart (видимо) использует «соль sha1» Шифрование

Где как инструменты я использую на сайте есть этот код (md5 шифрование):

$crypt_pwd = md5($password); 

Я знаю, что задаю относительно глупые вопросы, но как бы добавить в код моего кода код для того же шифрования? Даже просто указатель в правильном направлении было бы полезно :)

ответ

3

На самом деле OpenCart поддерживает обе схемы, так что вы должны быть хорошо только с помощью md5 хэш пароля в таблице клиентов. В этом случае вы можете просто оставить соль пустой.

В качестве точки отсчета, посмотрите на этот запрос используется в методе login() в system/library/customer.php, который где заверило Логин:

SELECT * FROM customer 
WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "' 
    AND 
    (
     password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) 
     OR password = '" . $this->db->escape(md5($password)) . "' 
    ) 
    AND status = '1' 
    AND approved = '1' 

Обратите внимание, что поле базы данных сопоставляется либо SHA1 с солью ИЛИ md5 хешированные версии.

+0

Привет, спасибо, что нашли время ответить, одна проблема с вашим ответом, однако, я играю с этим весь день безрезультатно, у меня все еще есть проблема: S (я не программист) Если Я создаю логин на моей стороне веб-сайта, я могу войти в opencart с той же информацией. Однако, если я создаю логин, используя opencart, он «солит», и я не могу войти на свою сторону сайта с этими подробностями пользователей. Я попытался добавить или $ crypt_pwd = SHA1 ($ password); Это не помогло :(Я не думаю, что я действительно понимаю эту соль, и откуда она получает свои значения: s Извините lol – Canderson90

+1

Мое предложение было бы либо изменить вставку opencart, чтобы строго использовать хэш и md5'-файл так что вся регистрация происходит на одной странице. Посмотрите на '/ catalog/model/account/customer.php' - в частности методы' addCustomer() 'и' editPassword() '. Там вы можете изменить запрос на что-то например, 'password = '. $ this-> db-> escape (md5 ($ password))."' и 'salt = '''. Надеюсь, это имеет смысл для вас. – billynoah

Смежные вопросы