2016-05-04 2 views
0

У меня есть веб-сайт с установленной в нем программой woo. В настоящее время я использую его как интернет-магазин. Однако я хочу сделать версию приложения на сайте так, чтобы люди могли регистрироваться, регистрироваться и покупать вещи в приложении, а также на веб-сайте.Как woo коммерция шифрует пароли?

Итак, я решил, что мне нужно будет зашифровать пароль пользователей так же, как и коммерция, зашифровывает его, чтобы пароль, отправленный из приложения, имел тот же хеш, что и один, отправленный через woo commerce.

Проблема в том, что я не знаю, как woo commerce шифрует свои пароли, и я попытался найти его, но ничего не получил.

Хотя у меня была догадка о том, что WordPress и Woo зашифровали пароли паролем таким же образом, пока я не создал две учетные записи с одинаковыми паролями, один через WordPress и один через woo-торговлю, а их хэши в моей базе данных были разными.

Если кто-то может помочь мне выяснить, как иметь два одинаковых пароля, желательно, не обойдя систему входа в систему woo, у меня уже есть, я был бы с благодарностью.

В качестве альтернативы: если кто-то может показать мне, где php-файл, который использует коммерция для шифрования своих паролей, тоже будет потрясающим!

Заранее спасибо.

+1

Зачем вам кто-то еще, чтобы предоставить вам доступ к * вашим собственным * файлам? –

+0

, потому что я не знаю, что это такое: D – Luid

+0

Я вижу, как это получилось неправильно в тексте. Я изменил его сейчас. – Luid

ответ

0

Получается, что woo commerce и WordPress используют один и тот же пароль hasher (в данном случае phpass).

Однако пароль hasher не имеет одного и того же пароля одновременно. Таким образом, единственный способ проверить, является ли пароль, заданный в обычном тексте, таким же, как пароль, который был зашифрован, - это запустить специальную функцию.

В этом случае специальная функция для phpass является «checkpassword»:

$correct = 'original password here'; 
$hash = 'some hashed password (eg. $P$BzunkYjtVU1F6Derj3.2sNslS.4jL6/)'; 
$check = $t_hasher->CheckPassword($correct, $hash); 

if ($check){ 
    echo "The passwords are the same"; 
}else 
    echo "The passwords are not the same"; 

В примере он проверяет простой текстовый пароль от хэша, чтобы увидеть в них одни и те же. Более подробную информацию об этом можно найти в файле test.php, который содержится в папке загрузки phpass.

В моем случае мне просто пришлось загрузить phpass и реализовать функцию checkpassword.

1

Это было очевидно, слишком долго для комментария ...

Если посмотреть в таблицу wp_users после того, как вы изменить чью-то пароль, их user_pass поле будет выглядеть $P$BCaLL1.Kcf3mWvwhEvQedwyX.etREw.. $P$ - это флаг, указывающий, что PHPass сгенерировал пароль. Следующие 8 символов BCaLL1.K представляют собой случайную соль, уникальную для каждого пользователя. Остальные символы - результат выполнения функции хэширования (bcrypt) на пароле несколько раз, добавляя соль к значению каждый раз, когда он собирается снова запустить хэш.

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

Чтобы ответить на ваш первоначальный вопрос, функция wp_hash_password() - это место для начала. Вы можете увидеть, как он взаимодействует с PHPass для генерации хэша.

+0

Спасибо Dave! Я понял. – Luid

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