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实现多进程并行执行脚本
Jun 18 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
php学习笔记之基础知识
Nov 08 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
Laravel实现表单提交
May 07 PHP
分析php://output和php://stdout的区别
May 06 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 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数据集构建JSON格式及新数组的方法
2012/11/07 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
一些常用的JS功能函数代码
2009/06/23 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
Python读取网页内容的方法
2015/07/30 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Python通过文本和图片生成词云图
2020/05/21 Python
python如何将图片转换素描画
2020/09/08 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
Internet体系结构
2014/12/21 面试题
教师个人自我鉴定
2014/02/08 职场文书
房屋出售授权委托书
2014/10/12 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server