当前位置:Gxlcms > php框架 > postfixadmin忘记密码后的修改密码方法详解

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

时间:2021-07-01 10:21:17 帮助过:18人阅读

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

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

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

php源码:

  1. <?php
  2. echo md5crypt("新密码");
  3. // md5crypt
  4. // Action: Creates MD5 encrypted password
  5. // Call: md5crypt (string cleartextpassword)
  6. function md5crypt($pw, $salt = "", $magic = "")
  7. {
  8. $MAGIC = "$1$";
  9. if ($magic == "")
  10. {
  11. $magic = $MAGIC;
  12. }
  13. if ($salt == "")
  14. {
  15. $salt = create_salt();
  16. }
  17. $slist = explode("$", $salt);
  18. if (isset($slist[0]) && $slist[0] == "1")
  19. {
  20. $salt = $slist[1];
  21. }
  22. $salt = substr($salt, 0, 8);
  23. $ctx = $pw.$magic.$salt;
  24. $final = hex2bin(md5($pw.$salt.$pw));
  25. for ($i = strlen($pw); $i > 0; $i -= 16)
  26. {
  27. if ($i > 16)
  28. {
  29. $ctx .= substr($final,0,16);
  30. }
  31. else
  32. {
  33. $ctx .= substr($final,0,$i);
  34. }
  35. }
  36. $i = strlen($pw);
  37. while ($i > 0)
  38. {
  39. if ($i & 1)
  40. {
  41. $ctx .= chr(0);
  42. }
  43. else
  44. {
  45. $ctx .= $pw[0];
  46. }
  47. $i = $i >> 1;
  48. }
  49. $final = hex2bin(md5($ctx));
  50. for ($i=0; $i<1000; $i++)
  51. {
  52. $ctx1 = "";
  53. if ($i & 1)
  54. {
  55. $ctx1 .= $pw;
  56. }
  57. else
  58. {
  59. $ctx1 .= substr($final,0,16);
  60. }
  61. if ($i % 3)
  62. {
  63. $ctx1 .= $salt;
  64. }
  65. if ($i % 7)
  66. {
  67. $ctx1 .= $pw;
  68. }
  69. if ($i & 1)
  70. {
  71. $ctx1 .= substr($final, 0, 16);
  72. }
  73. else
  74. {
  75. $ctx1 .= $pw;
  76. }
  77. $final = hex2bin(md5($ctx1));
  78. }
  79. $passwd = "";
  80. $passwd .= to64(((ord($final[0]) << 16) | (ord($final[6]) << 8) | (ord($final[12]))), 4);
  81. $passwd .= to64(((ord($final[1]) << 16) | (ord($final[7]) << 8) | (ord($final[13]))), 4);
  82. $passwd .= to64(((ord($final[2]) << 16) | (ord($final[8]) << 8) | (ord($final[14]))), 4);
  83. $passwd .= to64(((ord($final[3]) << 16) | (ord($final[9]) << 8) | (ord($final[15]))), 4);
  84. $passwd .= to64(((ord($final[4]) << 16) | (ord($final[10]) << 8) | (ord($final[5]))), 4);
  85. $passwd .= to64(ord($final[11]), 2);
  86. return $magic.$salt.'$'.$passwd;
  87. }
  88. function create_salt()
  89. {
  90. srand((double) microtime() * 1000000);
  91. return substr(md5(rand(0,9999999)), 0, 8);
  92. }
  93. // PHP around 5.3.8 includes hex2bin as native function - http://php.com/hex2bin
  94. function hex2bin($str)
  95. {
  96. $len = strlen($str);
  97. $nstr = "";
  98. for ($i = 0; $i < $len; $i += 2)
  99. {
  100. $num = sscanf(substr($str, $i, 2), "%x");
  101. $nstr .= chr($num[0]);
  102. }
  103. return $nstr;
  104. }
  105. function to64($v, $n)
  106. {
  107. $ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  108. $ret = "";
  109. while (($n - 1) >= 0)
  110. {
  111. $n--;
  112. $ret .= $ITOA64[$v & 0x3f];
  113. $v = $v >> 6;
  114. }
  115. return $ret;
  116. }

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总》

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

人气教程排行