WordPress使用哪种类型的哈希?


Answers:


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
Andrew Brown

14
我不知道这是否有帮助,但是第一次使用密码时,WP仍会使用直接的MD5,然后它将“加盐”。因此,如果您有权访问数据库,则可以使用MyPHPAdmin将PW更改为“ MyPass”,在“功能”(Function)下拉列表中选择MD5,它将另存为纯MD5。登录到Wordpress,然后将其更改为添加了$ P $ B __ /的“加盐”版本。
BillyNair 2015年

基本上,如果用户尚未使用PW登录,则它仍将是MD5格式,它将与具有相同PW的任何其他人看起来相同。登录后,即使使用该SAME EXACT PW,它也会更改为您自己的个人“盐”,因此,您和您的朋友使用同一PW同时登录时,您的“盐腌MD5”看起来会有所不同。这意味着,无法查询数据库以测试PW是否已从默认值更改,因为WP会将其更改为加盐版本,即使它与默认版本相同。
BillyNair

@AndrewBrown,我不同意MD5不再被接受。从CMS创建通行证可能是正确的,但是请尝试使用DB Level ..仍然有效。到目前为止,我丢失了WP密码;我登录到phpMyAdmin并为wp_users表中的密码字段生成MD5哈希,并且它的工作原理... Google:手动重置WordPress管理员密码 ..另请参阅johnMetta的答案。
wpcoder

3
毫无疑问,@ wpcoder MD5是100%加密不安全的,并且不能用作哈希密码存储方法。
安德鲁·布朗

21
$hash_type$salt$password

如果哈希不使用盐,则没有$迹象表明。您的情况下的实际哈希值是第二个之后$

这样做的原因是,因此您可以拥有多种类型的带有不同盐的哈希,并将该字符串输入一个知道如何将其与其他值匹配的函数中。


谢谢,但是我认为md5哈希必须是十六进制的,就像这样:b1946ac92492d2347c6235b4d2611184为什么此哈希值包含char AZ和。在里面?是md5哈希吗?

可能是使用的哈希类型。哈希只是固定大小的字符串。可以包含您想要的任何内容。
奥拉维尔Waage

@阿曼达·库玛 这次聚会来得很晚,但是MD5产生一个128位(16字节)的值。该值可以用不同的方式存储和表示,例如,十六进制字符串,Base64字符串或文件中的原始数据。您通常会看到十六进制表示的MD5值,但是WordPress改为使用Base64。您的十六进制值在Base64中为sZRqySSS0jR8YjW00mERhA ==,它比十六进制少使用25%的字符来表示相同的数据。
jordanbtucker

14

MD5为我工作,手动更改数据库。请参阅:重设密码


1
不,这不是一个简单的MD5哈希,纯MD5哈希是这样的:b1946ac92492d2347c6235b4d2611184我听说它是基于MD5,但也有人告诉我它使用什么类型的哈希,什么选项seelect在passwordspro

24
如果将MD5手动输入到表中,它将起作用,但是第一次登录时WP将使用其自己的哈希值对其进行重写,因此它非常适合重置密码,但仅此而已。
GiladG

1
@FranciscoCorralesMorales-按原样在数据库中输入密码,然后从下拉列表中选择MD5仍然有效。您也可以将MD5加密的字符串复制/粘贴到框中,而不选择任何内容,它就会起作用(因此,如果PW为“ qwertyuiop”,而ND5为“ 6eea9b7ef19179a06954edd0f6c05ceb”。如果您使用直接的“ qwertyuiop”密码,请选择“ MD5”,或使用该长哈希码且不选择任何内容,保存数据库,然后使用“ qwertyuiop”登录WordPress,它将起作用)
BillyNair

12

要在Wordpress DB中手动重置密码,简单的MD5哈希就足够了。(请参见下面的原因)

为了防止向后兼容,存储在数据库中的MD5哈希密码仍然有效。当用户使用这种密码登录时,WordPress会检测到使用了MD5,并使用更安全的方法重新加密了密码,并将新的哈希存储在数据库中。

资料来源:http//eamann.com/tech/wordpress-password-hashing/

更新:这是在2014年发布的答案。我不知道它是否仍适用于最新版本的WP,因为我不再使用WP。


保存MD5哈希不再有效。资料来源:我刚刚尝试过。
杰伊·吉

刚刚也尝试过并登录。MD5被自动转换为wp哈希。Wp版本5.1
Miro

10

我在找出Wordpress使用哪种哈希时遇到了同样的问题。

这是wp hash密码

将已经散列的密码与其纯文本字符串进行比较:

<?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
答案尚不清楚,但$ password是未加密的明文密码,而$ row ['user_pass']是您需要自己从数据库获取的哈希密码。
Advait S '18年

5

启动phpMyAdmin并从您的wordpress实例访问wp_users。编辑记录并选择user_pass函数以匹配MD5。在VALUE中输入将成为您的新密码的字符串。单击,开始。转到您的wordpress网站,然后输入新密码。返回phpMyAdmin,您将看到WP将HASH更改为类似$ P $ B的东西……尽情享受吧!


确认在2019年安装2017 WP!
Gerard ONeill

2

WordPress使用MD5密码哈希。创建纯文本密码的哈希。除非设置了全局$ wp_hasher,否则默认实现将使用PasswordHash,它将密码加盐并使用8次MD5传递来对其进行哈希处理。默认情况下使用MD5,因为所有平台都支持它。您可以使用$ portable_hashes构造函数参数或属性将PasswordHash配置为使用Blowfish或扩展DES(如果可用),而不是MD5。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.