3# Demon
我确实没有看过discuz加密的源码,但是以前有听说过discuz是用MD5加密的。
好了,现在你知道答案了,你想表达什么?
我今天去看了下discuz7.2源码:
bbs/register.php 第252行:
- $password = md5(random(10));
- $db->query("INSERT INTO {$tablepre}members (uid, username, password, secques, adminid, groupid, regip, regdate, lastvisit, lastactivity, posts, credits, extcredits1, extcredits2, extcredits3, extcredits4, extcredits5, extcredits6, extcredits7, extcredits8, email, showemail, timeoffset, pmsound, invisible, newsletter)
- VALUES ('$uid', '$username', '$password', '$secques', '0', '$groupinfo[groupid]', '$onlineip', '$timestamp', '$timestamp', '$timestamp', '0', $initcredits, '$email', '0', '9999', '1', '0', '1')");
复制代码
其中 random() 函数在
bbs/include/global.func.php 第909行
- function random($length, $numeric = 0) {
- PHP_VERSION < '4.2.0' ? mt_srand((double)microtime() * 1000000) : mt_srand();
- $seed = base_convert(md5(print_r($_SERVER, 1).microtime()), 16, $numeric ? 10 : 35);
- $seed = $numeric ? (str_replace('0', '', $seed).'012340567890') : ($seed.'zZ'.strtoupper($seed));
- $hash = '';
- $max = strlen($seed) - 1;
- for($i = 0; $i < $length; $i++) {
- $hash .= $seed[mt_rand(0, $max)];
- }
- return $hash;
- }
复制代码
这里大概的意思就是把 密码和一个随机数加起来的字符串 进行第一重MD5的16位加密,然后转换为十进制,然后加字符串zZ和大写第一次加密后的字符串,然后打乱这些字符串的顺序,最后再第二重 16位MD5加密。
这样想反查出明文密码就很难了。 |