Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

[已解决] UCenter authcode 解密失败

[复制链接]
肥爺 发表于 2014-2-25 19:55:12 | 显示全部楼层
首先 只要$key正确 Discuz的authcode加密是可逆

以X31为例 登录成功时
  1. dsetcookie('auth', authcode("{$member['password']}\t{$member['uid']}", 'ENCODE'), $cookietime, 1, true);
复制代码

此处省略了参数$key 则默认使用$_G['authkey']
  1. function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  2.         $ckey_length = 4;
  3.         $key = md5($key != '' ? $key : getglobal('authkey'));
复制代码


$_G['authkey']在哪?source/class/discuz/discuz_application
  1. $this->var['authkey'] = md5($this->var['config']['security']['authkey'].$this->var['cookie']['saltkey']);
复制代码


如果想在外部解密这个串 写上Discuz里取得的authkey就O了
Discuz的代码可读性还是很好的 so 下次提问前先读一下吧
回复

使用道具 举报

 楼主| 二差数列 发表于 2014-2-26 11:10:15 | 显示全部楼层
肥爺 发表于 2014-2-25 19:55
首先 只要$key正确 Discuz的authcode加密是可逆的

以X31为例 登录成功时

的确解出来了。谢谢。

PS:我读了源代码,但是以我的能力还无法完全搞清楚,系统太复杂了。
回复

使用道具 举报

lovevstime 发表于 2014-3-25 14:09:19 | 显示全部楼层
楼主QQ是多少 我这里出现相同的问题
回复

使用道具 举报

lovevstime 发表于 2014-3-25 16:31:27 | 显示全部楼层
肥爺 发表于 2014-2-25 19:55
首先 只要$key正确 Discuz的authcode加密是可逆的

以X31为例 登录成功时

想知道authkey 具体是怎么得到的 小白求教
疑问帖子https://discuz.dismall.com/thread-3530638-1-1.html
回复

使用道具 举报

 楼主| 二差数列 发表于 2014-3-26 11:28:53 | 显示全部楼层
lovevstime 发表于 2014-3-25 14:09
楼主QQ是多少 我这里出现相同的问题

肥爺 已经回答的很清楚了,
要解密,2个关键:
1、加密后的数据
2、加密的key

加密后的数据在cookie中,以 '_auth'结尾的那个
加密的key则是由两个字符串 'authkey' 和 'saltkey'经过md5后的字符串
其中authkey是discuz的配置文件里 $_config['security']['authkey'] 对应的,
saltkey则是cookie里以'_saltkey'结尾的那个

则解密的代码类似这样:
$data = authcode($cookie_auth, $operation = 'DECODE', $key = md5($config_authkey . $cookie_saltkey));
// $cookie_auth, $config_authkey, $cookie_saltkey 就是上面说的。
list($pwd, $uid) = explode("\t", $data);
// 其中$pwd就是加密后的用户密码,$uid就是用户的uid

希望能帮到你。
回复

使用道具 举报

lovevstime 发表于 2014-3-27 09:33:38 | 显示全部楼层
二差数列 发表于 2014-3-26 11:28
肥爺 已经回答的很清楚了,
要解密,2个关键:
1、加密后的数据

嗯 昨天咨询了@肥爺 然后仔细看了他的回帖  确实解密出来了 但是又出现了另外的问题  就是我的第三方程序获取论坛的cooki_auth值出现了前后不一样的情况 也就是说程序获取到cooki_auth值 和 dz的cooki_auth不一样了  导致最终解密不了程序中获取到的cooki_auth  楼主能想一下可能的原因出现在哪吗
回复

使用道具 举报

 楼主| 二差数列 发表于 2014-3-28 11:16:27 | 显示全部楼层
lovevstime 发表于 2014-3-27 09:33
嗯 昨天咨询了@肥爺 然后仔细看了他的回帖  确实解密出来了 但是又出现了另外的问题  就是我的第三方程序 ...

不知道你的第三方程序是怎么获取cookie_auth的,

我的两个网站在同一个根域名下,discuz是bbs.xxx.com,另一个网站是www.xxx.com,配置discuz的cookiedomain为主域名xxx.com,这样就能直接获取到discuz的cookie了。没出现值不一样的情况。
回复

使用道具 举报

lovevstime 发表于 2014-3-28 15:58:05 | 显示全部楼层
二差数列 发表于 2014-3-28 11:16
不知道你的第三方程序是怎么获取cookie_auth的,

我的两个网站在同一个根域名下,discuz是bbs.xxx.com ...

你给了我很好的启发 我的 根域名不一样 我马上试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 11:27 , Processed in 0.030975 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表