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 相关文章推荐
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
php字符串函数学习之strstr()
Mar 27 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python实现二分查找算法
2020/09/18 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
大学生自我鉴定
2013/12/16 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
和谐社区口号
2014/06/19 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
捐款仪式主持词
2015/07/04 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis