帝国 CMS 会员密码加密方式

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 20:15 ·0 浏览 ·0 回复

学完这篇,你能搞清楚帝国 CMS 的会员密码到底用什么算法加密、存在哪张表哪个字段、怎么自己动手验证,以及忘记密码时怎么安全地手工重置。

第一步:先确认版本和会员表

这一步要拿到两个信息:程序版本号和数据库表前缀,后面所有操作都依赖它们。登录帝国 CMS 后台,页面顶部或「系统」→「系统信息」里会显示版本号(如 7.2、7.5)。表前缀在 e/config/config.php 里,找 $ecms_config['db']['dbtbpre'],默认是 phome_,很多站会改成别的。

然后用 phpMyAdmin 或命令行连上数据库,执行:

SELECT userid, username, password, LENGTH(password) AS len
FROM phome_enewsmember LIMIT 5;

看 len 这一列:32 就是 MD5,40 是 SHA1,如果表里还有 salt 字段,说明程序做了加盐处理。同时确认一下 SHOW COLUMNS FROM phome_enewsmember; 的结果里有没有 salt 列。

注意:把 phome_ 换成你站点的实际前缀,前缀不对会直接报「表不存在」。

第二步:在源码里定位加密函数

这一步要找到程序真正用的加密代码,因为不同版本算法不一样。用 VS Code 或 Notepad++ 打开站点目录下的 e/class/connect.php,Ctrl+F 搜索 md5(;再打开 e/member/class/memberfun.php,搜索 password。会员注册、登录校验、改密码三处的加密逻辑是一样的,看到哪处都行。

判断规则很简单:如果代码是 md5($password),就是单次 MD5;如果是 md5(md5($password)),就是双重 MD5;如果出现 $salt 变量参与拼接,那就是加盐,必须按源码里的拼接顺序来算(谁在前谁在后不能猜)。

第三步:写个临时脚本对比验证

这一步用一个一次性 PHP 脚本,把明文算出来的值和数据库里的值直接对比,一次就能确认算法。在网站根目录新建 checkpwd.php:

<?php
$pwd  = '123456';                      // 你已知的明文密码
$conn = mysqli_connect('localhost', '数据库用户', '数据库密码', '数据库名');
mysqli_query($conn, 'set names utf8');
$r = mysqli_query($conn, "select password from phome_enewsmember where username='testuser'");
$row = mysqli_fetch_row($r);
echo '数据库值: ' . $row[0] . '<br>';
echo 'md5: '      . md5($pwd) . '<br>';
echo 'md5(md5): ' . md5(md5($pwd)) . '<br>';

浏览器访问 你的域名/checkpwd.php,哪一行和「数据库值」完全一致,就是哪种算法。

注意:验证完立刻删掉 checkpwd.php。放在根目录等于把数据库账号密码挂在公网上,会有被扫到的风险。

第四步:手工重置会员密码

这一步在确认算法后,直接把算好的密文写回数据库。以单次 MD5 为例,123456 的 MD5 是 e10adc3949ba59abbe56e057f20f883e,执行:

UPDATE phome_enewsmember
SET password = 'e10adc3949ba59abbe56e057f20f883e'
WHERE username = 'testuser';

如果是加盐版本,要先从源码里确认拼接规则,再用 PHP 算出密文,同时把对应的 salt 值一起写进去,两个字段必须配套。

注意:后台「会员管理」里改密码走的是程序自己的加密,一定能登录;直接改库时如果算法或 salt 对不上,前台会一直提示密码错误。

小结

  • 会员密码存在 phome_enewsmember 表的 password 字段,前缀以 e/config/config.php 为准。
  • 字段长度 32 位是 MD5,是新老版本最常见的形态;有 salt 列说明做了加盐。
  • 加密规则以 e/class/connect.php 和 e/member/class/memberfun.php 里的源码为准,不要凭经验猜。
  • 单次 MD5 无盐的站点,弱密码可以被彩虹表直接反查,建议改成强密码。
  • 手工重置后务必删除临时脚本。
版权声明:本文来自 GJ站长论坛《帝国 CMS 会员密码加密方式》
原文链接:https://www.gj0.com/thread-517.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~