wordpress 自带方法重置修改密码

php 4年前 (2020) 筑路邦
2,518 0

WordPress系统的用户密码保存在wp_users表user_pass字段,密码是通过duPortable PHP password hashing framework类产生的,密码的形式是随机且不可逆,同一个明文的密码在不同时间,产生的密文也不一样,相对来说较为安全。
WordPress用户密码产生的过程是,当需要生成用户密码的时候,随机产生了一个salt,然后将salt和password相加,又进行了count次md5,最后和encode64的hash数值累加,就得到了一个以$P$开头的密码,这个密码每次产生的结果都不一样,下面就是产生WordPress密码的代码,将其放在WordPress根目录下,就可以生成一个加密的password,用这个密码替换掉wp_users数据表的user_pass字段即可修改密码。

用于生成密码

<?php
$password = 'admin888';
global $wp_hasher;
if ( empty($wp_hasher) ) {
require_once( './wp-includes/class-phpass.php');
$wp_hasher = new PasswordHash(8, TRUE);
}
echo $wp_hasher->HashPassword($password);
?>

在WordPress中主要用到两个函数wp_hash_password() 和 wp_check_password()来对文本进行生成密文和对密文的验证。

function wp_hash_password($password) {
    global $wp_hasher;
    if ( emptyempty($wp_hasher) ) {
        require_once( ABSPATH . WPINC . '/class-phpass.php');
        // By default, use the portable hash from phpass
        $wp_hasher = new PasswordHash(8, true);
    }
    return $wp_hasher->HashPassword( trim( $password ) );
}

function wp_check_password($password, $hash, $user_id = '') {
global $wp_hasher;
if ( emptyempty($wp_hasher) ) {
require_once( ABSPATH . WPINC . '/class-phpass.php');
// By default, use the portable hash from phpass
$wp_hasher = new PasswordHash(8, true);
}
$check = $wp_hasher->CheckPassword($password, $hash);
return apply_filters( 'check_password', $check, $password, $hash, $user_id );
}

//生成加密密文
$password = wp_hash_password("qcqx");
//把密文和文本验证
echo wp_check_password("qcqx",$password ) ;
//输出 1,对比成功

 

修改WordPress用户密码有更简单的方法

就是直接将wp_users数据表的user_pass字段修改为32位的md5(passowrd)即可修改密码为password,这样的密码形式当然不是很安全,所以,当这个用户在WordPress登录后,系统会自动将MD5密码修改为以$P$开头的密码。
WordPress的这种支持简单md5格式的密码使得其他系统(例如Ucenter系统)的用户整合WordPress更为简单。

版权声明:筑路邦 发表于 2020-09-08 13:54:58。
转载请注明:wordpress 自带方法重置修改密码 | 襄音导航