找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 3329|回复: 0

Discuz authcode 函数 封神级 加密函数

[复制链接]

506

主题

18

回帖

5

广播

论坛版主

积分
260
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

发表于 2020-9-29 10:59:31 | 显示全部楼层 |阅读模式
  1. /**
  2. * 对字符串进行加密和解密
  3. * @param <string> $string
  4. * @param <string> $operation  DECODE 解密 | ENCODE  加密
  5. * @param <string> $key 当为空的时候,取全局密钥
  6. * @param <int> $expiry 有效期,单位秒
  7. * @return <string>
复制代码

  1. function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  2.         $ckey_length = 4;
  3.         $key = md5($key != '' ? $key : getglobal('authkey'));
  4.         $keya = md5(substr($key, 0, 16));
  5.         $keyb = md5(substr($key, 16, 16));
  6.         $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

  7.         $cryptkey = $keya.md5($keya.$keyc);
  8.         $key_length = strlen($cryptkey);

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

  11.         $result = '';
  12.         $box = range(0, 255);

  13.         $rndkey = array();
  14.         for($i = 0; $i <= 255; $i++) {
  15.                 $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  16.         }

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

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

  31.         if($operation == 'DECODE') {
  32.                 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
  33.                         return substr($result, 26);
  34.                 } else {
  35.                         return '';
  36.                 }
  37.         } else {
  38.                 return $keyc.str_replace('=', '', base64_encode($result));
  39.         }

  40. }
复制代码


获得 小财神卡 一张

卡片说明:君山 遇到 [有钱的花火] 被赠与 2 铜钥匙.

卡片效果:获得 2 铜钥匙

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

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-11-21 23:33 , Processed in 0.145865 second(s), 35 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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