Admin.php 密码忘了,postfixadmin忘记密码后的修改密码方法详解

本文实例讲述了postfixadmin忘记密码后的修改密码方法。分享给大家供大家参考,具体如下:

Postfix Admin 是一个基于Web的 Postfix 邮件发送服务器的管理工具,可以直接管理 Postfix 的虚拟域名和用户。

由于有一段时间没使用postfixadmin增删用户了, 突然需使用时忘记了管理密码,  使用老外的方式直接在数据库里修改密码, 后登录成功

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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值