Prestashop 1.7 Шифрование Паролей Клиентов?
Я сделал некоторую стороннюю систему, основанную на php для Prestashop 1.6. Он работает с подключением непосредственно к базе данных Prestashop. И знайте, что я обновил свой Presta до 1.7.5.1, и он работает. Только он больше не входит в систему клиентов, потому что, как я вижу, шифрование пароля изменилось. Я использовал md5(COOKIE_KEY."пароль") для 1.6, но я вижу пароли на 1.7 ничего похожего на md5. Не могли бы вы рассказать мне, как шифрование. (это станет намного лучше, если вы скажете мне с php-кодом)
Тема 1.7.5.1
$2y$10$6b460aRLklgWblz75NAMteYXLJwjfV6a / uN8GJKgJgPDBuNhHs.Юм
для 123456
Ответы - Prestashop 1.7 Шифрование Паролей Клиентов? / Prestashop 1.7 Customer Password Encryption?

29.04.2019 03:43:10
Тема 1.7.x теперь использует bcrypt в качестве предпочтительного метода хэширования (md5 все еще поддерживается).
Чтобы лучше понять поведение между электронной версии v1.6.x против 1.7.x для проверки паролей рассмотрим getByEmail()
в классе Customer:
/**
* Return customer instance from its e-mail (optionally check password).
*
* @param string $email e-mail
* @param string $plaintextPassword Password is also checked if specified
* @param bool $ignoreGuest
*
* @return bool|Customer|CustomerCore Customer instance
*/
public function getByEmail($email, $plaintextPassword = null, $ignoreGuest = true)
Если $plaintextPassword
, то зашифрованная версия пароля извлекается с помощью:
$this->passwd = $crypto->hash($plaintextPassword);
Класс хэширования может быть создан путем выполнения:
$crypto = ServiceLocator::get('\\PrestaShop\\PrestaShop\\Core\\Crypto\\Hashing');
Пример решения с использованием движка 1.7 классы/методы:
<?php
namespace PrestaShop\PrestaShop\Core\Crypto;
include('config/config.inc.php');
$plaintextPassword = '123456';
$crypto = new Hashing;
$encryptedPassword = $crypto->hash($plaintextPassword, _COOKIE_KEY_);
echo 'Clear: '.$plaintextPassword.'<br />Encrypted: '.$encryptedPassword;
/* Result (example)
Clear: 123456
Encrypted: $2y$10$6b460aRLklgWblz75NAMteYXLJwjfV6a/uN8GJKgJgPDBuNhHs.ym */
Альтернативное решение, без необходимости включать какие-либо файлы/методы PrestaShop:
<?php
$plaintextPassword = '123456';
$encryptedPassword = password_hash($plaintextPassword, PASSWORD_BCRYPT);
echo var_dump(password_verify($plaintextPassword, $encryptedPassword)); // True if encryption is matching
Надеюсь, это поможет.


