孩紫MC
本帖最后由 孩紫MC 于 2015-6-11 12:08 编辑

或许大家都知道 authme支持各种加密方式  于是乎我就开发了一套注册系统

由于时间原因 近几天丢到自己的服务器去测试 结果发现了个很诡异的问题


情况是这样的 按正常来说 当在web上修改了游戏密码  authme应该会自动识别帐号所对应的密码

但是我却奇葩的发现 密码是更改了(密码在游戏跟网页是通用的 但是现在出现了 网页能登陆!游戏不能登陆?) 这是什么情况 结果询问了X服的腐竹并让其帮忙测试 嗯 的确也是有这个奇葩的问题
嗯 当然这里嘛 authme是使用mysql的 而web也同样使用了mysql 好了 接下来我应该贴个图
这是在服务器记录的一段东西 就是authme中保存的玩家帐号密码  下面来看看修改密码过后的情况
现在问题就来了 当我修改密码后 就出现这样的情况 然而我们来对比下密码吧

通过某网站的帮助下 得出了以下结果


好了 至此问题就显然而见了 在改完密码的时候 密码不能立即对游戏生效 而当reload完(服务器重启)就生效了 这说明authme的机制应该是有问题了(或者是缓存机制?)(如果有的说法请说出来 我不介意的)

jiongjionger
看图片发现你网页端的加密方法是MD5.
然而Authme的加密算法不是MD5而是SHA-256
Java的实现代码例子:
  1. public static String Encrypt(String strSrc, String encName) {
  2.                 MessageDigest md = null;
  3.                 String strDes = null;
  4.                 byte[] bt = strSrc.getBytes();
  5.                 try {
  6.                         if (encName == null || encName.equals("")) {
  7.                                 encName = "SHA-256";
  8.                         }
  9.                         md = MessageDigest.getInstance(encName);
  10.                         md.update(bt);
  11.                         strDes = bytes2Hex(md.digest());
  12.                 } catch (NoSuchAlgorithmException e) {
  13.                         return null;
  14.                 }
  15.                 return strDes;
  16.         }
复制代码

孩紫MC
jiongjionger 发表于 2015-6-11 18:21
看图片发现你网页端的加密方法是MD5.
然而Authme的加密算法不是MD5而是SHA-256
Java的实现代码例子:

然而并不是md5 是sha1= =

尘曲
配置文件中cache关闭

孩紫MC
尘曲 发表于 2015-6-13 21:53
配置文件中cache关闭

{:10_514:}嗯 的确是 在问题提出之后就解决了 就是不知道为什么cache会造成这样的情况发生

nikoniko_ni
Authme有查询缓存
这个问题可以通过关闭缓存功能来解决

云闪
通过authme改密会更新缓存_(:_」∠)_然而如果直接修改数据库就会导致这个问题(不过话说这个不缓存也没啥性能损耗啊…)

第一页 上一页 下一页 最后一页