版权声明:本文为Boyd Wang原创文章,转载时请注明作者及本文链接
本文链接:http://www.boydwang.com/2014/03/discuz-password-encrypting-algorithm/

今天在拿Discuz进行二次开发时需要在代码里验证Discuz的用户名密码,结果不小心掉进了坑里,因为Discuz的论坛有两张表来存储用户数据,一张在Discuz的数据库ultrax里面的pre_common_member里面,另一个是存储在了UCenter的数据库ucenter的uc_members表里。花了很大功夫在研究ultrax库里那张pre_common_member的数据,研究它的密码是如何生成的,结果搜了一下发现网上说是随机生成的一个salt,心想这随机生成的salt如何在登录时进行验证呢?然后网上说其实Discuz压根就没用那个密码,自己试验了一下,果真如此,即使把pre_common_member里面的用户密码改掉,照样能够正常登录,看来这个密码压根就没用,害我绕了一个大圈子。

好了,进入正题,Discuz的密码加密算法其实就是两次MD5加密,首先用明文进行一次加密,之后随机生成一个salt,再把第一次的密文后面添加salt作为明文再进行一次MD5加密。salt保存在uc_members表里,可以通过用户名进行获取。

像这样:

MD5(MD5(明文)+salt)

下面是.net的实现代码:



打赏

Boyd Wang

想给自己贴上各种NB的头衔,NB程序员,NB自由职业者,最后发现自己其实是个Newbie,没办法,慢慢来吧

5 Comments

我行我素 · 03/05/2014 at 10:44

这个东西可以啊,还可以用第三方账号登陆啊,你的主页都挂广告了啊,可以赚钱嘛?

    Boyd Wang · 03/05/2014 at 18:13

    装了多说插件,就可以用社交网络登录了,广告。。。那个纯属摆设,收入可以忽略不计了

我行我素 · 04/23/2014 at 10:21

看好你的个人微博 继续努力

    Boyd Wang · 04/23/2014 at 17:37

    谢谢小伙伴~~

Comments are closed.

无觅相关文章插件,快速提升流量