zoukankan      html  css  js  c++  java
  • http://blog.csdn.net/spidertiger/archive/2006/09/11/1206512.aspx

    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;
  • 相关阅读:
    python 关于mysql 的 API pymysql
    Mysql
    Django的流程和命令行工具
    float属性 与position(定位)
    CSS的优先级与继承
    CSS的引入方式及选择器
    Html5 杂项
    Spring AOP之注解实现
    Spring AOP之xml 配置实现
    Java 正则表达式
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400473.html
Copyright © 2011-2022 走看看