0) { $keys = self::getBytes($keys); for ($i = 0; $i < count($list); $i++) { $keyVar = $keys[$i % count($keys)]; $data[$i] = $list[$i] - (0xff & $keyVar); } return self::toStr($data); } else { return $strEncode; } } /** * 计算游戏同步签名 */ public static function getSign($params, $callbackkey) { return md5($params['nt_data'] . $params['sign'] . $callbackkey); } /** * 本地计算MD5签名PHP示例代码 * @param $callbackkey 后台分配的通信密钥 * @return 本地计算的md5签名值 */ public static function getMd5Sign($callbackkey) { $params = $_POST; unset($params['sign']); ksort($params); $signKey = ''; foreach ($params as $key => $val) { $signKey .= $key . '=' . $val . '&'; } $signKey .= $callbackkey; return md5($signKey); } public static function getMd5Sign2($callbackkey, $needLinkSign = true, $signKeyName = "sign") { $params = $_POST; unset($params[$signKeyName]); ksort($params); $signKey = ''; foreach ($params as $key => $val) { if ($signKey != '') { $signKey .= "&"; } $signKey .= $key . '=' . $val; } if ($needLinkSign) { $signKey .= '&'; } $signKey .= $callbackkey; return md5($signKey); } /** * MD5签名替换 */ static private function replaceMD5($md5) { strtolower($md5); $bytes = self::getBytes($md5); $len = count($bytes); if ($len >= 23) { $change = $bytes[1]; $bytes[1] = $bytes[13]; $bytes[13] = $change; $change2 = $bytes[5]; $bytes[5] = $bytes[17]; $bytes[17] = $change2; $change3 = $bytes[7]; $bytes[7] = $bytes[23]; $bytes[23] = $change3; } else { return $md5; } return self::toStr($bytes); } /** * 转成字符数据 */ private static function getBytes($string) { $bytes = array(); for ($i = 0; $i < strlen($string); $i++) { $bytes[] = ord($string[$i]); } return $bytes; } /** * 转化字符串 */ private static function toStr($bytes) { $str = ''; foreach ($bytes as $ch) { $str .= chr($ch); } return $str; } }