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;
  • 相关阅读:
    C# 日志本地化工具
    javascript面向对象的写法01
    VM12-Pro 安装CentOS7 并配置静态IP出坑记
    基于CentOS7.x安装Nginx-1.18.0
    程序员思维导图、web初学者必备、web前端知识集锦-不断更新中...
    js知识
    swiper的使用
    web 移动端键盘处理-vue移动端那些事
    vue学习计划-vuex生态
    vue 组件复用
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400473.html
Copyright © 2011-2022 走看看