Jakiego typu hasha używa WordPress?

Odpowiedzi:

146

Skrót haseł WordPress implementuje przenośną strukturę haszowania haseł PHP , która jest używana w systemach zarządzania treścią, takich jak WordPress i Drupal.

W starszych wersjach używali MD5, ale niestety już nie. Możesz generować skróty za pomocą tego schematu szyfrowania pod adresem http://scriptserver.mainframe8.com/wordpress_password_hasher.php .

Neil
źródło
12
czy ktoś napotyka to stare pytanie tak jak ja, proszę zauważyć, że MD5 nie jest już akceptowalne. jeśli masz> PHP 5.5.0, użyj nowej password_hashfunkcji. jeśli masz tylko> PHP 5.3.7, użyj biblioteki kompatybilności tutaj github.com/ircmaxell/password_compat
Andrew Brown,
14
Nie wiem, czy to w ogóle pomoże, ale WP nadal weźmie prostą MD5 za pierwszym razem, gdy użyjesz hasła, a następnie je „zasoli”. Tak więc, jeśli masz dostęp do DB, za pomocą MyPHPAdmin możesz zmienić PW na „MyPass”, wybierz MD5 z listy rozwijanej „Funkcja” i zapisze się jako zwykłe MD5. Zaloguj się do Wordpressa, a zmieni go na wersję „soloną” z dodanym $ P $ B __ /.
BillyNair
Zasadniczo, jeśli użytkownik NIE zalogował się za pomocą PW, nadal będzie w formacie MD5, będzie wyglądał tak samo, jak każdy inny z tym samym PW. Po zalogowaniu się, nawet z tym SAMO DOKŁADNYM PW, zmieni się on na TWOJĄ osobistą „sól”, więc Ty i Twój znajomy logujecie się w tym samym czasie z tym samym PW, Twój „solony MD5” będzie wyglądał inaczej. Oznacza to, że nie ma możliwości wysłania zapytania do DB w celu sprawdzenia, czy PW zostało zmienione z domyślnego, ponieważ WP zmieni je na wersję soloną, nawet jeśli była taka sama jak domyślna.
BillyNair
@AndrewBrown, Nie zgadzam się, że MD5 nie jest już akceptowalne. Może to być prawda przy tworzeniu przepustki z CMS, ale spróbuj na poziomie DB… nadal działa. Do dnia, kiedy zgubię hasło WP; Loguję się do phpMyAdmin i generuję hash MD5 dla pól haseł w tabeli wp_users i działa ... Google: ręcznie zresetuj hasło administratora WordPress ... zobacz także odpowiedź johnMetty.
wpcoder
3
@wpcoder MD5 nie jest zadawany, w 100% kryptograficznie niezabezpieczony i nie do przyjęcia jako metoda przechowywania haszowanych haseł.
Andrew Brown
21
$hash_type$salt$password

Jeśli haszysz nie zawiera soli, nie ma na to $oznak. Rzeczywisty hash w twoim przypadku jest po 2$

Powodem tego jest to, że możesz mieć wiele typów skrótów z różnymi solami i podawać ciągi do funkcji, która wie, jak dopasować ją do innej wartości.

Ólafur Waage
źródło
dzięki, ale pomyślałem, że skróty md5 muszą być w postaci szesnastkowej, na przykład: b1946ac92492d2347c6235b4d2611184 dlaczego ten hash ma znaki AZ i. w tym? czy to hash md5?
Może to być używany rodzaj skrótu. Hash to po prostu ciąg o stałym rozmiarze. Może zawierać wszystko, co chcesz.
Ólafur Waage
@Amanda Kumar. Bardzo późno na tę stronę, ale MD5 generuje 128-bitową (16-bajtową) wartość. Ta wartość może być przechowywana i reprezentowana na różne sposoby, na przykład jako ciąg szesnastkowy, ciąg Base64 lub surowe dane w pliku. Często widzisz wartości MD5 reprezentowane szesnastkowo, jednak WordPress zamiast tego używa Base64. Twoja wartość szesnastkowa byłaby sZRqySSS0jR8YjW00mERhA == w Base64, który używa o 25% mniej znaków niż szesnastkowy do przedstawienia tych samych danych.
jordanbtucker
14

MD5 pracował dla mnie ręcznie zmieniając moją bazę danych. Zobacz: Resetowanie hasła

JohnMetta
źródło
1
nie, to nie jest zwykły hash md5, zwykłe skróty md5 wyglądają tak: b1946ac92492d2347c6235b4d2611184 Słyszałem, że jest oparty na md5, ale czy ktoś może mi powiedzieć, jakiego typu hasha używa i jaką opcję wybrać w hasłach pro
24
MD5 będzie działać, jeśli zostanie wprowadzony ręcznie do tabeli, ale przy pierwszym logowaniu WP przepisze go przy użyciu własnego skrótu, więc działa świetnie do resetowania hasła, ale nie więcej.
GiladG
1
@FranciscoCorralesMorales - wpisanie hasła tak, jak jest w DB, a następnie wybranie MD5 z listy rozwijanej nadal działa. Możesz również skopiować / wkleić zaszyfrowany ciąg MD5 w polu i niczego nie wybierać, a będzie on działać (więc jeśli Twój PW to „qwertyuiop”, Twoje ND5 to „6eea9b7ef19179a06954edd0f6c05ceb”. Jeśli używasz prostego hasła „qwertyuiop”, wybierz „ MD5 ”lub użyj tego długiego skrótu i ​​niczego nie wybieraj, zapisz bazę danych, a następnie zaloguj się do WordPressa za pomocą„ qwertyuiop ”i będzie działać)
BillyNair
12

Do ręcznego resetowania hasła w bazie danych Wordpress wystarczy prosty skrót MD5. (patrz powód poniżej)

Aby zapobiec zerwaniu wstecznej kompatybilności, hasła zaszyfrowane MD5 przechowywane w bazie danych są nadal ważne. Kiedy użytkownik loguje się przy użyciu takiego hasła, WordPress wykrywa użycie MD5, zmienia hasło przy użyciu bezpieczniejszej metody i przechowuje nowy skrót w bazie danych.

Źródło: http://eamann.com/tech/wordpress-password-hashing/

Aktualizacja: to była odpowiedź opublikowana w 2014 roku. Nie wiem, czy nadal działa z najnowszą wersją WP, ponieważ nie pracuję już z WP.

JJLL
źródło
Zapisywanie skrótu MD5 już nie działa. Źródło: właśnie spróbowałem.
Jay Jee
Właśnie wypróbowałem to i zalogowałem się. MD5 został automatycznie przekonwertowany na skrót wp. Wersja WP 5.1
Miro
10

Miałem ten sam problem, aby dowiedzieć się, jakiego rodzaju skrótu używa Wordpress.

Jest to hasło skrótu wp .

Przykład

Porównaj już zaszyfrowane hasło z jego zwykłym ciągiem tekstowym:

<?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";
}
?>

Zobacz te linki: https://codex.wordpress.org/Function_Reference/wp_hash_password

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

Używa PasswordHash, który dodaje soli do hasła i haszuje je 8 przebiegami MD5.

Meisam
źródło
9

Zależy to przynajmniej od używanej wersji PHP. wp-includes/class-phpass.phpzawiera wszystkie odpowiedzi.

innaM
źródło
7

Najlepszym sposobem na to jest użycie klasy WordPress do uwierzytelniania użytkowników. Oto moje rozwiązania:

1. Dołącz następujący plik PHP WordPress:

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

2. Utwórz obiekt PasswordHashklasy:

$wp_hasher = new PasswordHash(8, true);

3. wywołanie CheckPasswordfunkcji uwierzytelniania użytkownika:

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

4. sprawdź $checkzmienną:

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

Zwróć uwagę, że: $passwordto niezaszyfrowane hasło w postaci zwykłego tekstu, podczas gdy $row['user_pass']jest to zaszyfrowane hasło, które musisz pobrać z bazy danych.

Faisal Shaikh
źródło
2
Nie jest to jasne w odpowiedzi, ale $ password to niezaszaszowane hasło w postaci zwykłego tekstu, podczas gdy $ row ['user_pass'] to zaszyfrowane hasło, które musisz samodzielnie pobrać z bazy danych.
Advait S
5

Uruchom phpMyAdmin i uzyskaj dostęp do wp_users ze swojej instancji wordpress. Edytuj rekord i wybierz funkcję user_pass, aby pasowała do MD5. Wpisz ciąg, który będzie Twoim nowym hasłem w VALUE. Kliknij, GO. Przejdź do witryny Wordpress i wprowadź nowe hasło. Wracając do phpMyAdmin, zobaczysz, że WP zmienił HASH na coś takiego jak $ P $ B ... baw się dobrze!

ceccoto
źródło
potwierdzona instalacja WP 2017 w 2019!
Gerard ONeill
2

Wordpress używa haszowania hasła MD5 . Tworzy skrót hasła w postaci zwykłego tekstu. O ile globalny $ wp_hasher nie jest ustawiony, domyślna implementacja używa PasswordHash, który dodaje sól do hasła i haszuje je za pomocą 8 przebiegów MD5. MD5 jest używane domyślnie, ponieważ jest obsługiwane na wszystkich platformach. Możesz skonfigurować PasswordHash tak, aby używał Blowfish lub rozszerzonego DES (jeśli jest dostępny) zamiast MD5 z argumentem lub właściwością konstruktora $ portable_hashes.

J. Shabu
źródło
2

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

globalna $ wpdb;

$ password = wp_hash_password ("twoje hasło");

Hiran DA Walawage
źródło