mediawiki用户密码处理

Mediawiki 的用户密码是用 MD5加密算法加密的。但它并不直接采用它对用户的 password 进行加密,而是对所需加密的内容加以处理的。经过以下的步骤处理之后,密码数据就可以直接入库,所以有必要时我们可以对 mediawiki用户批量入库。


由终端进入 ${MEDIAWIKI_HOME}/includes/ 目录,用下列命令查看一下:

$ grep 'md5' *

结果系统列出了很多内容包含有“md5”的文件,如:

...
array( 'html' => $parsed, 'hash' => md5( $notice ) ), 600 );
GlobalFunctions.php: $p = md5( $password);
GlobalFunctions.php: return md5( "{$userid}-{$p}" );
HistoryBlob.php: $hash = md5( $text );
...

可以看到,GlobalFunctions.php 文件中有一条对登录密码的加密代码 $p = md5($password);。打开它,查找这条语句在文件中的位置,发现原来它是这样加密的:

function wfEncryptPassword( $userid, $password ) {
global $wgPasswordSalt;
$p = md5( $password);
if($wgPasswordSalt)
return md5( "{$userid}-{$p}" );
else
return $p;
}

也就是说,系统获取用户在数据库中的 ID 号,将这个 ID 号与加过密的登录密码用“-”号连接,再将这个连接后的字符串作一次加密,将这个加密的结果存入数据库。用这种方法可以避免两个完全相同的密码在数据库中存储也完全相同。


下面简化一下它的步骤:

$var = md5($upwd);
$pwd = md5("{$id}-{$var}");
return $pwd;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值