Que tipo de hash o WordPress usa?


Respostas:


146

O hasher de senha do WordPress implementa a estrutura de hash de senha PHP portátil , usada em sistemas de gerenciamento de conteúdo como WordPress e Drupal.

Eles costumavam usar o MD5 nas versões mais antigas, mas infelizmente para mim, não mais. Você pode gerar hashes usando esse esquema de criptografia em http://scriptserver.mainframe8.com/wordpress_password_hasher.php .


12
Se alguém se deparar com essa pergunta antiga como eu, observe que o MD5 não é mais aceitável. se você tiver> PHP 5.5.0 use a nova password_hashfunção. se você tiver apenas o PHP 5.3.7, use a biblioteca de compatibilidade aqui github.com/ircmaxell/password_compat
Andrew Brown

14
Não sei se isso vai ajudar, mas o WP ainda usará o MD5 direto na primeira vez em que você usou a senha, depois a "salgará". Portanto, se você tiver acesso ao banco de dados, usando o MyPHPAdmin, poderá alterar o PW para "MyPass", selecione MD5 no menu suspenso "Função" e ele será salvo como um MD5 direto. Entre no Wordpress e ele será alterado para a versão "salgada" com o $ P $ B __ / adicionado.
BillyNair 26/10

Basicamente, se o usuário NÃO tiver entrado com o PW, ele ainda estará no formato MD5, parecerá o mesmo que qualquer outra pessoa com o mesmo PW. Depois que você fizer login, mesmo com o mesmo PW EXATO, ele mudará para SEU "sal" pessoal, para que você e seu amigo entrem ao mesmo tempo com o mesmo PW, seu "MD5 salgado" terá uma aparência diferente. Ou seja, não há como consultar o banco de dados para testar se um PW foi alterado do padrão, pois o WP o alterará para uma versão salgada, mesmo que seja o mesmo que o padrão.
22915 BillyNair

@ AndrewBrown, eu discordo que o MD5 não é mais aceitável. Pode ser verdade para a criação da passagem do CMS, mas tente no nível de banco de dados ... ainda funciona. Até a data em que perco a senha do WP; Estou logado no phpMyAdmin e giro o hash MD5 para os campos de senha na tabela wp_users e funciona ... Google: redefina manualmente a senha de administrador do WordPress. Veja também a resposta de johnMetta.
Wpcoder

3
O @wpcoder MD5 não faz perguntas, é 100% criptograficamente inseguro e inaceitável para uso como método de armazenamento de senha com hash.
Andrew Brown

21
$hash_type$salt$password

Se o hash não usar sal, não há $sinal para isso. O hash real no seu caso é após o segundo$

A razão para isso é que você pode ter muitos tipos de hashes com diferentes sais e alimentar essa string em uma função que sabe como combiná-la com algum outro valor.


obrigado, mas pensei que os hashes MD5 tivessem que ser hexadecimais, assim: b1946ac92492d2347c6235b4d2611184 por que esse hash tem caracteres AZ e. iniciar? é um hash MD5?

Pode ser o tipo de hash usado. Um Hash é apenas uma sequência de tamanho fixo. Pode conter o que você quiser.
Ólafur Waage

@Amanda Kumar. Extremamente atrasado para essa parte, mas o MD5 produz um valor de 128 bits (16 bytes). Esse valor pode ser armazenado e representado de diferentes maneiras, por exemplo, como uma sequência hexadecimal, uma sequência Base64 ou dados brutos em um arquivo. Você geralmente vê os valores MD5 representados em hexadecimal, mas o WordPress usa o Base64. Seu valor hexadecimal seria sZRqySSS0jR8YjW00mERhA == no Base64, que usa 25% menos caracteres que hexadecimal para representar os mesmos dados.
Jordanbtucker 19/02

14

O MD5 trabalhou para mim alterando meu banco de dados manualmente. Consulte: Redefinindo sua senha


1
Não, isso não é um hash md5 simples, os hashes md5 simples são assim: b1946ac92492d2347c6235b4d2611184 Ouvi dizer que é baseado no md5, mas alguém pode me dizer que tipo de hash ele usa e que opção selecionar na senhaspro

24
O MD5 funcionará se inserido manualmente na tabela, mas após o primeiro login, o WP irá reescrevê-lo usando seu próprio hash, para que ele funcione muito bem na redefinição da senha, mas não mais do que isso.
GiladG

1
@FranciscoCorralesMorales - digitar o PassWord como está no banco de dados e selecionar MD5 no menu suspenso ainda funciona. Você também pode copiar / colar uma seqüência de caracteres criptografada MD5 na caixa e não selecionar nada e funcionará (portanto, se seu PW for "qwertyuiop", seu ND5 será "6eea9b7ef19179a06954edd0f6c05ceb". Se você usar a senha direta "qwertyuiop", selecione " MD5" , ou o uso esse hash longo e não selecionar nada, senão o DB, e em seguida, entrar em WordPress usando 'qwertyuiop' e irá funcionar)
BillyNair

12

Para redefinir manualmente a senha no Wordpress DB, basta um hash MD5 simples. (veja o motivo abaixo)

Para evitar a quebra de compatibilidade, as senhas com hash MD5 armazenadas no banco de dados ainda são válidas. Quando um usuário faz login com essa senha, o WordPress detecta que o MD5 foi usado, repassa a senha usando o método mais seguro e armazena o novo hash no banco de dados.

Fonte: http://eamann.com/tech/wordpress-password-hashing/

Atualização: esta foi uma resposta publicada em 2014. Não sei se ainda funciona para a versão mais recente do WP, pois não trabalho mais com o WP.


Salvar um hash MD5 não funciona mais. Fonte: Eu apenas tentei.
Jay Jee

Apenas tentei e também loguei. O MD5 foi convertido automaticamente em um hash wp. Wp versão 5.1
Miro

10

Eu tive o mesmo problema para descobrir que tipo de Hash o Wordpress usa.

É a senha de hash wp .

Exemplo

Compare uma senha já com hash com sua sequência de texto sem formatação:

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

Consulte estes links: https://codex.wordpress.org/Function_Reference/wp_hash_password

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

Ele usa o PasswordHash, que adiciona sal à senha e a mistura com 8 passagens de MD5.


9

Depende pelo menos da versão do PHP usada. wp-includes/class-phpass.phpcontém todas as respostas.


7

A melhor maneira de fazer isso é usar a classe WordPress para autenticar usuários. Aqui estão as minhas soluções:

1. Inclua o seguinte arquivo PHP do WordPress:

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

2. Crie um objeto da PasswordHashclasse:

$wp_hasher = new PasswordHash(8, true);

3. chamar a CheckPasswordfunção para autenticar o usuário:

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

4. verifique a $checkvariável:

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

Observe que: $passwordé a senha sem hash em texto não criptografado $row['user_pass']e a senha com hash que você precisa buscar no banco de dados.


2
Não está claro na resposta, mas $ password é o passe sem hash em texto não criptografado, enquanto $ row ['user_pass'] é a senha com hash que você precisa buscar no banco de dados.
Advait S

5

Inicie o phpMyAdmin e acesse wp_users na sua instância do wordpress. Edite o registro e selecione a função user_pass para corresponder ao MD5. Escreva a string que será sua nova senha em VALUE. Clique em Ir. Vá para o seu site wordpress e digite sua nova senha. De volta ao phpMyAdmin, você verá que o WP mudou o HASH para algo como $ P $ B ... divirta-se!


instalação 2017 confirmada do WP em 2019!
precisa

2

Wordpress usa hash de senha MD5 . Cria um hash de uma senha de texto sem formatação. A menos que o $ wp_hasher global esteja definido, a implementação padrão usa o PasswordHash, que adiciona salt à senha e a mistura com 8 passagens de MD5. O MD5 é usado por padrão porque é suportado em todas as plataformas. Você pode configurar o PasswordHash para usar Blowfish ou DES estendido (se disponível) em vez do MD5 com o argumento ou a propriedade do construtor $ portable_hashes.


2

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

global $ wpdb;

$ password = wp_hash_password ("sua senha");


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.