postfixadmin忘记密码后的修改密码方法详解

 更新时间:2016年07月20日 09:44:19   转载 作者:lee  
这篇文章主要介绍了postfixadmin忘记密码后的修改密码方法,结合实例形式分析了postfixadmin生成新密码的方法,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • yii权限控制的方法(三种方法)

    yii权限控制的方法(三种方法)

    这篇文章主要介绍了yii权限控制的方法,结合实例形式分析了通过accessControl,插件机混合模式三种方法实现权限控制的实现技巧,需要的朋友可以参考下
    2015-12-12
  • php版微信公众平台接口开发之智能回复开发教程

    php版微信公众平台接口开发之智能回复开发教程

    这篇文章主要介绍了php版微信公众平台接口开发之智能回复开发,结合实例形式较为详细的分析了只能回复功能的原理与通过微信接口调用具体实现技巧,需要的朋友可以参考下
    2016-09-09
  • Yii2框架自定义验证规则操作示例

    Yii2框架自定义验证规则操作示例

    这篇文章主要介绍了Yii2框架自定义验证规则操作,结合实例形式分析了Yii2自定义验证规则实现方法、操作技巧与注意事项,需要的朋友可以参考下
    2019-02-02
  • Thinkphp5框架ajax接口实现方法分析

    Thinkphp5框架ajax接口实现方法分析

    这篇文章主要介绍了Thinkphp5框架ajax接口实现方法,结合实例形式分析了thinkPHP5 ajax交互相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • php按百分比生成缩略图的代码分享

    php按百分比生成缩略图的代码分享

    最近的一个网站项目中上传图片需要生成缩略图,以减小列表页的大小,减缓服务器压力。一向崇尚简洁明了和实用的我,看到网上搜到的一个个长长的php缩略图类的时候,感到非常痛苦。我承认他们写的功能是强大一些,但是我不需要这么复杂的功能
    2014-05-05
  • Zend Framework实现多文件上传功能实例

    Zend Framework实现多文件上传功能实例

    这篇文章主要介绍了Zend Framework实现多文件上传功能的方法,较为详细的分析说明了Zend Framework实现多文件上传的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-03-03
  • 基于php实现随机合并数组并排序(原排序)

    基于php实现随机合并数组并排序(原排序)

    最近做了一个项目,其中有这样一个需求要实现,原有帖子列表A,现在需要在A中推广新业务B,那么需要在A列表中1:1混合B中的数据,随机混合,但是需要保持A和B两列原来的数据排序,本篇文章给大家介绍基于php实现随机合并数组并排序(原排序),需要的朋友参考下
    2015-11-11
  • PHP URL参数获取方式的四种例子

    PHP URL参数获取方式的四种例子

    这篇文章主要介绍了PHP URL参数获取方式的四种例子,php url参数解析的4种方法,需要的朋友可以参考下
    2014-02-02
  • 根据ip调用新浪api获取城市名并转成拼音

    根据ip调用新浪api获取城市名并转成拼音

    这篇文章主要介绍了根据ip调用新浪api获取城市名并转成拼音的示例,,需要的朋友可以参考下
    2014-03-03
  • ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例

    ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例

    这篇文章主要介绍了ThinkPHP结合ajax、Mysql实现的客户端通信功能,需要的朋友可以参考下
    2014-06-06

最新评论