Какой тип хеша использует WordPress?

Ответы:

146

В хеше паролей WordPress реализована платформа хэширования переносимых паролей PHP , которая используется в таких системах управления контентом, как WordPress и Drupal.

Раньше они использовали MD5 в старых версиях, но, к сожалению для меня, не более. Вы можете создавать хэши, используя эту схему шифрования по адресу http://scriptserver.mainframe8.com/wordpress_password_hasher.php .

Нил
источник
12
если кто-то сталкивается с этим старым вопросом, как я, пожалуйста, обратите внимание, что MD5 больше не приемлемо. если у вас> PHP 5.5.0, используйте новую password_hashфункцию. если у вас есть только> PHP 5.3.7, используйте библиотеку совместимости здесь github.com/ircmaxell/password_compat
Эндрю Браун
14
Я не знаю, поможет ли это вообще, но WP по-прежнему будет использовать прямой MD5 при первом использовании пароля, а затем «засолит» его. Итак, если у вас есть доступ к БД, с помощью MyPHPAdmin вы можете изменить PW на «MyPass», выберите MD5 в выпадающем меню «Function», и он будет сохранен как прямой MD5. Войдите в Wordpress, и он изменится на «соленую» версию с добавлением $ P $ B __ /.
BillyNair
По сути, если пользователь НЕ вошел в систему с PW, он все равно будет в формате MD5, он будет выглядеть так же, как и любой другой пользователь с таким же PW. После того, как вы войдете в систему, даже с этой ЖЕ ТОЧНОЙ PW, она изменится на ВАШУ личную «соль», поэтому вы и ваш друг, войдите в систему одновременно с тем же PW, ваш «соленый MD5» будет выглядеть по-другому. Это означает, что нет никакого способа запросить БД, чтобы проверить, была ли PW изменена по умолчанию, так как WP изменит ее на соленую версию, даже если она была такой же, как по умолчанию.
BillyNair
@ AndrewBrown, я не согласен с тем, что MD5 больше не является приемлемым. Может быть, это правда для создания прохода из CMS, но попробуйте на уровне БД .. это все еще работает. На дату, когда я теряю пароль WP; Я вошел в phpMyAdmin и сгенерировал хеш MD5 для полей пароля в таблице wp_users, и это работает ... Google: вручную сбросить пароль администратора WordPress .. также ответьте johnMetta.
wpcoder
3
@wpcoder MD5 не вызывает вопросов, на 100% криптографически небезопасен и неприемлем для использования в качестве метода хранения хешированных паролей.
Эндрю Браун
21
$hash_type$salt$password

Если в хэше не используется соль, то для этого нет никаких $признаков. Фактический хеш в вашем случае после 2-го$

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

Олафур Вааге
источник
спасибо, но я думал, что хэши md5 должны быть в шестнадцатеричном виде, например: b1946ac92492d2347c6235b4d2611184 почему этот хеш имеет символы AZ и. в этом? это хэш MD5?
Может быть тот тип хэша, который используется. Хэш - это просто строка фиксированного размера. Может содержать все, что вы хотите.
Олафур Вааге
@ Аманда Кумар. Крайне поздно для этой стороны, но MD5 выдает 128-битное (16-байтовое) значение. Это значение может быть сохранено и представлено различными способами, например, в виде шестнадцатеричной строки, строки Base64 или необработанных данных в файле. Вы обычно видите значения MD5, представленные в шестнадцатеричном формате, однако WordPress использует Base64 вместо этого. Ваше шестнадцатеричное значение будет равно sZRqySSS0jR8YjW00mERhA == в Base64, которое использует на 25% меньше символов, чем шестнадцатеричное для представления тех же данных.
Jordanbtucker
14

MD5 помог мне изменить базу данных вручную. Смотрите: Сброс пароля

JohnMetta
источник
1
нет, это не простой хэш md5, обычные хэши md5 выглядят так: b1946ac92492d2347c6235b4d2611184 я слышал, что он основан на md5, но кто-то может сказать мне, какой тип хэша он использует и какую опцию видеть в passwordspro
24
MD5 будет работать, если он введен вручную в таблицу, но при первом входе в систему WP перепишет его, используя свой собственный хеш, поэтому он отлично работает для сброса пароля, но не более того.
GiladG
1
@FranciscoCorralesMorales - ввод PassWord как есть в БД, затем выбор MD5 из раскрывающегося списка все еще работает. Вы также можете скопировать / вставить зашифрованную строку MD5 в поле и ничего не выбирать, и это будет работать (поэтому, если ваш PW "qwertyuiop", ваш ND5 будет "6eea9b7ef19179a06954edd0f6c05ceb". Если вы используете прямой пароль "qwertyuiop", выберите " MD5 ", или используйте этот длинный хэш и ничего не выбирайте, сохраните БД, а затем войдите в WordPress, используя" qwertyuiop ", и это будет работать)
BillyNair
12

Для ручного сброса пароля в Wordpress DB достаточно простого хеша MD5. (см. причину ниже)

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

Источник: http://eamann.com/tech/wordpress-password-hashing/

Обновление: это был ответ, опубликованный в 2014 году. Я не знаю, работает ли он для последней версии WP, так как я больше не работаю с WP.

JJLL
источник
Сохранение хеша MD5 больше не работает. Источник: я только что попробовал.
Джей Джи
Только что попробовал и вошел в систему. MD5 автоматически конвертировался в хэш wp. Wp версия 5.1
Miro
10

У меня была такая же проблема, выясняя, какой хэш использует Wordpress.

Это хэш-пароль wp .

пример

Сравните уже хешированный пароль с его строкой в ​​виде простого текста:

<?php
$wp_hasher = new PasswordHash(8, TRUE);

$password_hashed = '$P$B55D6LjfHDkINU5wF.v2BuuzO0/XPk/';
$plain_password = 'test';

if($wp_hasher->CheckPassword($plain_password, $password_hashed)) {
    echo "YES, Matched";
} else {
    echo "No, Wrong Password";
}
?>

Смотрите эти ссылки: https://codex.wordpress.org/Function_Reference/wp_hash_password

https://developer.wordpress.org/reference/functions/wp_hash_password

Он использует PasswordHash, который добавляет соль к паролю и хэширует его с 8 проходами MD5.

Мейсам
источник
9

Это зависит по крайней мере от используемой версии PHP. wp-includes/class-phpass.phpсодержит все ответы.

InnaM
источник
7

Лучший способ сделать это - использовать класс WordPress для аутентификации пользователей. Вот мои решения:

1. Включите следующий PHP-файл WordPress:

include_once(dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "wp-includes" . DIRECTORY_SEPARATOR . "class-phpass.php");

2. Создайте объект PasswordHashкласса:

$wp_hasher = new PasswordHash(8, true);

3. вызвать CheckPasswordфункцию для аутентификации пользователя:

$check = $wp_hasher->CheckPassword($password, $row['user_pass']);

4. проверьте $checkпеременную:

if($check) {
   echo "password is correct";
} else {
   echo "password is incorrect";
}

Обратите внимание, что: $passwordэто хешированный пароль в открытом тексте, а $row['user_pass']хешированный пароль, который вам нужно получить из базы данных.

Фейсал Шейх
источник
2
В ответе неясно, но $ password - это незашифрованный проход в виде открытого текста, тогда как $ row ['user_pass'] - это хешированный пароль, который вам нужно получить из базы данных самостоятельно.
Advait S
5

Запустите phpMyAdmin и получите доступ к wp_users из вашего экземпляра WordPress. Отредактируйте запись и выберите функцию user_pass для соответствия MD5. Напишите строку, которая будет вашим новым паролем, в VALUE. Нажмите, GO. Перейдите на ваш сайт WordPress и введите новый пароль. Возвращаясь к phpMyAdmin, вы увидите, что WP изменил HASH на что-то вроде $ P $ B ... наслаждайтесь!

ceccoto
источник
подтверждена установка WP 2017 в 2019 году!
Джерард ONeill
2

Wordpress использует хеширование паролей MD5 . Создает хэш простого текстового пароля. Если не установлен глобальный $ wp_hasher, реализация по умолчанию использует PasswordHash, который добавляет соль к паролю и хэширует его с 8 проходами MD5. MD5 используется по умолчанию, потому что он поддерживается на всех платформах. Вы можете настроить PasswordHash на использование Blowfish или расширенного DES (если доступно) вместо MD5 с аргументом или свойством конструктора $ portable_hashes.

Дж. Шабу
источник
2

include_once ( '../../../ WP-config.php');

глобальный $ wpdb;

$ password = wp_hash_password ("ваш пароль");

Хиран Д.А.
источник