postfixadmin忘记密码后的修改密码方法详解


Posted in PHP onJuly 20, 2016

本文实例讲述了postfixadmin忘记密码后的修改密码方法。分享给大家供大家参考,具体如下:

Postfix Admin 是一个基于Web的 Postfix 邮件发送服务器的管理工具,可以直接管理 Postfix 的虚拟域名和用户。

由于有一段时间没使用postfixadmin增删用户了, 突然需使用时忘记了管理密码,  使用老外的方式直接在数据库里修改密码, 后登录成功

php源码:

<?php
echo md5crypt("新密码");
// md5crypt
// Action: Creates MD5 encrypted password
// Call: md5crypt (string cleartextpassword)
function md5crypt($pw, $salt = "", $magic = "")
{
  $MAGIC = "$1$";
  if ($magic == "")
  {
    $magic = $MAGIC;
  }
  if ($salt == "")
  {
    $salt = create_salt();
  }
  $slist = explode("$", $salt);
  if (isset($slist[0]) && $slist[0] == "1")
  {
    $salt = $slist[1];
  }
  $salt = substr($salt, 0, 8);
  $ctx = $pw.$magic.$salt;
  $final = hex2bin(md5($pw.$salt.$pw));
  for ($i = strlen($pw); $i > 0; $i -= 16)
  {
    if ($i > 16)
    {
      $ctx .= substr($final,0,16);
    }
    else
    {
      $ctx .= substr($final,0,$i);
    }
  }
  $i = strlen($pw);
  while ($i > 0)
  {
    if ($i & 1)
    {
      $ctx .= chr(0);
    }
    else
    {
      $ctx .= $pw[0];
    }
    $i = $i >> 1;
  }
  $final = hex2bin(md5($ctx));
  for ($i=0; $i<1000; $i++)
  {
    $ctx1 = "";
    if ($i & 1)
    {
      $ctx1 .= $pw;
    }
    else
    {
      $ctx1 .= substr($final,0,16);
    }
    if ($i % 3)
    {
      $ctx1 .= $salt;
    }
    if ($i % 7)
    {
      $ctx1 .= $pw;
    }
    if ($i & 1)
    {
      $ctx1 .= substr($final, 0, 16);
    }
    else
    {
      $ctx1 .= $pw;
    }
    $final = hex2bin(md5($ctx1));
  }
  $passwd = "";
  $passwd .= to64(((ord($final[0]) << 16) | (ord($final[6]) << 8) | (ord($final[12]))), 4);
  $passwd .= to64(((ord($final[1]) << 16) | (ord($final[7]) << 8) | (ord($final[13]))), 4);
  $passwd .= to64(((ord($final[2]) << 16) | (ord($final[8]) << 8) | (ord($final[14]))), 4);
  $passwd .= to64(((ord($final[3]) << 16) | (ord($final[9]) << 8) | (ord($final[15]))), 4);
  $passwd .= to64(((ord($final[4]) << 16) | (ord($final[10]) << 8) | (ord($final[5]))), 4);
  $passwd .= to64(ord($final[11]), 2);
  return $magic.$salt.'$'.$passwd;
}
function create_salt()
{
  srand((double) microtime() * 1000000);
  return substr(md5(rand(0,9999999)), 0, 8);
}
// PHP around 5.3.8 includes hex2bin as native function - http://php.net/hex2bin
function hex2bin($str)
{
    $len = strlen($str);
    $nstr = "";
    for ($i = 0; $i < $len; $i += 2)
    {
      $num = sscanf(substr($str, $i, 2), "%x");
      $nstr .= chr($num[0]);
    }
    return $nstr;
}
function to64($v, $n)
{
  $ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $ret = "";
  while (($n - 1) >= 0)
  {
    $n--;
    $ret .= $ITOA64[$v & 0x3f];
    $v = $v >> 6;
  }
  return $ret;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
数据库相关问题
Oct 09 PHP
php session处理的定制
Mar 16 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP生成条形图的方法
Dec 10 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
PHP中foreach()用法汇总
Jul 02 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
golang 调用 php7详解及实例
Jan 04 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
PHP简单日历实现方法
Jul 20 #PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 #PHP
PHP实现数组array转换成xml的方法
Jul 19 #PHP
smarty循环嵌套用法示例分析
Jul 19 #PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 #PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 #PHP
JSON两种结构之对象和数组的理解
Jul 19 #PHP
You might like
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
学习php笔记 字符串处理
2010/10/19 PHP
解析php中memcache的应用
2013/06/18 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
vue实现文件上传功能
2018/08/13 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
python编码总结(编码类型、格式、转码)
2016/07/01 Python
python读取Excel实例详解
2018/08/17 Python
Numpy之random函数使用学习
2019/01/29 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python向图片里添加文字
2019/11/26 Python
Python多线程thread及模块使用实例
2020/04/28 Python
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
接口可以包含哪些成员
2012/09/30 面试题
服务行业个人求职的自我评价
2013/12/12 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
交通安全标语
2014/06/06 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python