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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
PHP 手机归属地查询 api
Feb 08 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
深入分析PHP引用(&amp;)
Sep 04 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php实现中文转数字
Feb 18 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP基于socket实现客户端和服务端通讯功能
Jul 13 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
远程教育心得体会
2014/01/03 职场文书
简单租房协议书
2014/04/09 职场文书
阳光体育活动总结
2014/04/30 职场文书
植树节新闻稿
2015/07/17 职场文书
2016年国培研修日志
2015/11/13 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS