Mediawiki用户密码加密方式

本文介绍了MediaWiki不同版本中使用的密码加密方法。包括低于1.13.0版本的oldCrypt函数及1.13.0及以上版本的crypt函数。探讨了基于MD5的密码哈希生成过程,并涉及密码盐的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Mediawiki 1.18.0 includes/User.php中,找到加密函数, 其中oldCrypt为mediawiki版本低于1.13.0的加密函数(与低版本中的wfEncryptPassword函数等同),crypt为mediawiki大于等于1.13.0版本的加密函数。

$wgPasswordSalt定义在includes/defaultSettings.php中,默认为true,详情参看:[url]http://www.mediawiki.org/wiki/Manual:$wgPasswordSalt[/url]


/**
* Make an old-style password hash
*
* @param $password String Plain-text password
* @param $userId String User ID
* @return String Password hash
*/
public static function oldCrypt( $password, $userId ) {
global $wgPasswordSalt;
if ( $wgPasswordSalt ) {
return md5( $userId . '-' . md5( $password ) );
} else {
return md5( $password );
}
}

/**
* Make a new-style password hash
*
* @param $password String Plain-text password
* @param bool|string $salt Optional salt, may be random or the user ID.

* If unspecified or false, will generate one automatically
* @return String Password hash
*/
public static function crypt( $password, $salt = false ) {
global $wgPasswordSalt;

$hash = '';
if( !wfRunHooks( 'UserCryptPassword', array( &$password, &$salt, &$wgPasswordSalt, &$hash ) ) ) {
return $hash;
}

if( $wgPasswordSalt ) {
if ( $salt === false ) {
$salt = substr( wfGenerateToken(), 0, 8 );
}
return ':B:' . $salt . ':' . md5( $salt . '-' . md5( $password ) );
} else {
return ':A:' . md5( $password );
}
}




低版本的mediawiki(如1.11.0)加密函数位于includes/GlobalFunctions.php

/**
* Encrypt a username/password.
*
* @param string $userid ID of the user
* @param string $password Password of the user
* @return string Hashed password
*/
function wfEncryptPassword( $userid, $password ) {
global $wgPasswordSalt;
$p = md5( $password);

if($wgPasswordSalt)
return md5( "{$userid}-{$p}" );
else
return $p;
}


mediawiki用户密码重置:[url]http://www.mediawiki.org/wiki/Manual:Resetting_passwords[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值