收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 3794|回复: 3

[php] 请教UChome二次开发中的问题

[复制链接]
发表于 2009-1-5 13:43:02 | 显示全部楼层 |阅读模式
UChome在用户注册和登陆的时候,密码是通过md5、随机密钥等几种方式混合加密的。

请问如何修改,才能使UChome在对密码加密的时候,只适用md5一种方式呢?

附上他的解密函数
  1. function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {

  2.         $ckey_length = 4;        // 随机密钥长度 取值 0-32;
  3.                                 // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
  4.                                 // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
  5.                                 // 当此值为 0 时,则不产生随机密钥

  6.         $key = md5($key ? $key : UC_KEY);
  7.         $keya = md5(substr($key, 0, 16));
  8.         $keyb = md5(substr($key, 16, 16));
  9.         $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

  10.         $cryptkey = $keya.md5($keya.$keyc);
  11.         $key_length = strlen($cryptkey);

  12.         $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
  13.         $string_length = strlen($string);

  14.         $result = '';
  15.         $box = range(0, 255);

  16.         $rndkey = array();
  17.         for($i = 0; $i <= 255; $i++) {
  18.                 $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  19.         }

  20.         for($j = $i = 0; $i < 256; $i++) {
  21.                 $j = ($j + $box[$i] + $rndkey[$i]) % 256;
  22.                 $tmp = $box[$i];
  23.                 $box[$i] = $box[$j];
  24.                 $box[$j] = $tmp;
  25.         }

  26.         for($a = $j = $i = 0; $i < $string_length; $i++) {
  27.                 $a = ($a + 1) % 256;
  28.                 $j = ($j + $box[$a]) % 256;
  29.                 $tmp = $box[$a];
  30.                 $box[$a] = $box[$j];
  31.                 $box[$j] = $tmp;
  32.                 $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
  33.         }

  34.         if($operation == 'DECODE') {
  35.                 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
  36.                         return substr($result, 26);
  37.                 } else {
  38.                         return '';
  39.                 }
  40.         } else {
  41.                 return $keyc.str_replace('=', '', base64_encode($result));
  42.         }
  43. }
复制代码
发表于 2009-1-5 14:59:29 | 显示全部楼层
这个函数就可以解密的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-5 17:45:27 | 显示全部楼层
是可以解密,但是我想要的是不让它进行其他方式的加密,只是用md5一种
回复 支持 反对

使用道具 举报

发表于 2009-1-5 18:00:49 | 显示全部楼层
我觉得你是没事干,如果你要md5还用它的函数干什么??直接md5()不就行了,我觉得他的函数很好用
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-10-28 07:22 , Processed in 0.098386 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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