Який тип хешу використовує 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 у спадному меню "Функція", і він збережеться як прямий MD5. Увійдіть у Wordpress, і він змінить його на "солену" версію з додаванням $ P $ B __ /.
BillyNair

В основному, якщо користувач НЕ ввійшов з PW, він все ще буде у форматі MD5, він буде виглядати так само, як і будь-хто інший із тим самим PW. Щойно ви ввійдете в систему, навіть із тим самим ПОДІЙНИМ PW, він зміниться на ВАШУ власну персональну «сіль», тож ви та ваш друг одночасно входите в систему з тим же PW, ваш «засолений MD5» буде виглядати інакше. Це означає, що немає можливості запитувати БД, щоб перевірити, чи змінено PW з замовчуванням, оскільки WP змінить його на солену версію, навіть якщо вона була такою ж, як і за замовчуванням.
BillyNair

@AndrewBrown, я не погоджуюся, що MD5 більше не прийнятний. Можливо, це правда для створення пропуску з CMS, але спробуйте на рівні DB .. це все ще працює. До дати, коли я втрачаю пароль WP; Я заходжу на phpMyAdmin і генерую хеш MD5 для полів паролів у таблиці wp_users, і він працює ... Google: вручну скиньте пароль адміністратора WordPress. Дивіться також відповідь johnMetta.
wpcoder

3
@wpcoder MD5 не задає запитань, 100% криптографічно незахищений і неприйнятний для використання в якості методу зберігання паролів.
Ендрю Браун

21
$hash_type$salt$password

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

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


спасибі, але я подумав, що хеди md5 повинні бути у шістнадцятковій формі, наприклад: b1946ac92492d2347c6235b4d2611184, чому цей хеш має символи AZ та. в цьому? це хеш md5?

Може бути той тип хешу, який використовується. Хеш - це лише рядок фіксованого розміру. Може містити все, що завгодно.
flafur Waage

@Amanda Kumar. Надзвичайно пізно до цієї партії, але MD5 виробляє 128-бітове (16-байтне) значення. Це значення можна зберігати та представляти різними способами, наприклад, як шістнадцяткову рядок, рядок Base64 або необроблені дані у файлі. Ви зазвичай бачите значення MD5, представлені в шістнадцятковій версії, проте WordPress використовує Base64. Ваше шістнадцяткове значення буде sZRqySSS0jR8YjW00mERhA == у Base64, який використовує на 25% менше символів, ніж шістнадцятковий, щоб представляти ті самі дані.
jordanbtucker

14

MD5 працював на мене, змінюючи базу даних вручну. Див.: Скидання пароля


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 достатньо простого хеша MD5. (див. причину нижче)

Щоб запобігти порушенню зворотної сумісності, паролі, що зберігаються в базі даних MD5, зберігаються в базі даних. Коли користувач входить із таким паролем, WordPress виявляє, що MD5 був використаний, повторно переробити пароль за допомогою більш безпечного методу та зберігає новий хеш у базі даних.

Джерело: http://eamann.com/tech/wordpress-password-hashing/

Оновлення: ця відповідь була опублікована у 2014 році. Я не знаю, чи працює вона все ще в останній версії WP, оскільки я більше не працюю з WP.


Збереження хеша 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містить усі відповіді.


7

Найкращий спосіб зробити це - використовувати клас WordPress для аутентифікації користувачів. Ось мої рішення:

1. Включіть наступний файл WordPress PHP:

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
У відповіді незрозуміло, але $ пароль - це неперевірений пропуск у чистому тексті, тоді як $ row ['user_pass'] - хешований пароль, який вам потрібно отримати самостійно з db.
Адвайт S

5

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


підтверджено встановлення 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 ("ваш пароль");


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.