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
使用apache模块rewrite_module (转)
Feb 14 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
php阳历转农历优化版
Aug 08 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
PHP二维数组去重算法
Dec 17 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PDO::setAttribute讲解
Jan 29 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 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
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
php URL验证正则表达式
2011/07/19 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
php中上传文件的的解决方案
2018/09/25 PHP
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python函数局部变量用法实例分析
2015/08/04 Python
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
Python实战之制作天气查询软件
2019/05/14 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
大一新生学期自我评价
2014/04/09 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
MySQL中一条update语句是如何执行的
2022/03/16 MySQL