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的类树(支持无限分类)
Oct 09 PHP
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
PHP入门速成教程
Mar 19 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
thinkPHP事务操作简单案例分析
Oct 17 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
PHP7 其他语言层面的修改
Mar 09 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 已经成熟
2006/12/04 PHP
phplot生成图片类用法详解
2015/01/06 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
Python ini文件常用操作方法解析
2020/04/26 Python
python raise的基本使用
2020/09/10 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
非常详细的C#面试题集
2016/07/13 面试题
节水倡议书范文
2014/04/15 职场文书
出国留学计划书
2014/04/27 职场文书
医院员工辞职信范文
2015/05/12 职场文书
环保建议书作文300字
2015/09/14 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript