Tokiwa Battle Royale  GE777
A PHP Battle Royale inspired game
 All Data Structures Namespaces Files Functions Variables Pages
gameencrypt.php
Go to the documentation of this file.
1 <?php
2 
11 function game_encrypt($txt, $key) {
12 
13  // 使用随机数发生器产生 0~32000 的值并 MD5()
14  srand((double)microtime() * 1000000);
15  $encrypt_key = md5(rand(0, 32000));
16 
17  // 变量初始化
18  $ctr = 0;
19  $tmp = '';
20 
21  // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
22  for($i = 0; $i < strlen($txt); $i++) {
23  // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
24  $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
25  // $tmp 字串在末尾增加两位,其第一位内容为 $encrypt_key 的第 $ctr 位,
26  // 第二位内容为 $txt 的第 $i 位与 $encrypt_key 的 $ctr 位取异或。然后 $ctr = $ctr + 1
27  $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
28  }
29 
30  // 返回结果,结果为 game_key() 函数返回值的 base65 编码结果
31  return base64_encode(game_key($tmp, $key));
32 
33 }
34 
44 function game_decrypt($txt, $key) {
45 
46  // $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起,
47  // 经过 game_key() 函数处理后的返回值
48  $txt = game_key(base64_decode($txt), $key);
49 
50  // 变量初始化
51  $tmp = '';
52 
53  // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
54  for ($i = 0; $i < strlen($txt); $i++) {
55  // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
56  // 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1
57  $tmp .= $txt[$i] ^ $txt[++$i];
58  }
59 
60  // 返回 $tmp 的值作为结果
61  return $tmp;
62 
63 }
64 
73 function game_key($txt, $encrypt_key) {
74 
75  // 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值
76  $encrypt_key = md5($encrypt_key);
77 
78  // 变量初始化
79  $ctr = 0;
80  $tmp = '';
81 
82  // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
83  for($i = 0; $i < strlen($txt); $i++) {
84  // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
85  $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
86  // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
87  // 与 $encrypt_key 的第 $ctr + 1 位取异或。然后 $ctr = $ctr + 1
88  $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
89  }
90 
91  // 返回 $tmp 的值作为结果
92  return $tmp;
93 
94 }
95 
103 function game_encode($array) {
104 
105  // 数组变量初始化
106  $arrayenc = array();
107 
108  // 遍历数组 $array,其中 $key 为当前元素的下标,$val 为其对应的值
109  foreach($array as $key => $val) {
110  // $arrayenc 数组增加一个元素,其内容为 "$key=经过 urlencode() 后的 $val 值"
111  $arrayenc[] = $key.'='.urlencode($val);
112  }
113 
114  // 返回以 "&" 连接的 $arrayenc 的值(implode),例如 $arrayenc = array('aa', 'bb', 'cc', 'dd'),
115  // 则 implode('&', $arrayenc) 后的结果为 ”aa&bb&cc&dd"
116  return implode('&', $arrayenc);
117 
118 }
119 
120 
121 
122 
123 ?>
game_encode($array)
$i
Definition: botservice.php:267
game_encrypt($txt, $key)
Definition: gameencrypt.php:11
game_key($txt, $encrypt_key)
Definition: gameencrypt.php:73
game_decrypt($txt, $key)
Definition: gameencrypt.php:44