$val){ if ($key == '' || $key == 'a' || $key == 'c') { continue; } if ($key[0] == '_') { continue; } $params_str = $params_str . $key . '=' . $val . '&'; } if($params_str != ''){ $params_str = substr($params_str, 0, -1); } return md5($params_str . $secret_key . $timestamp); } function ksVerify($service_name) { if (!isset($_REQUEST['__timestamp']) || $_REQUEST['__timestamp'] < time() - 3600 * 1) { return false; } if ($_REQUEST['__service_name'] != $service_name) { return false; } $app_name = $_REQUEST['__project_name']; $project_name = PROJECT_NAME; $filename = "../keys/provider/$service_name@$project_name.provider.json.php"; if (!file_exists($filename)) { die('not found ' . $filename); } $data = file_get_contents($filename); if (!$data) { die("open file error $filename"); } $jsonobj = json_decode($data, true); if (!isset($jsonobj[$app_name]) || !isset($jsonobj[$app_name]['secret_key'])) { return false; } foreach ($jsonobj[$app_name]['secret_key'] as $secret_key) { if (_internalSign($secret_key, $_REQUEST['__timestamp'], $_REQUEST) == $_REQUEST['__sign']) { return true; } } return false; } function ksSign($app_name, $service_name, &$params) { $filename = "../keys/consumer/$service_name@$app_name.consumer.json.php"; if (!file_exists($filename)) { die('not found ' . $filename); } $data = file_get_contents($filename); if (!$data) { die("open file error $filename"); } $jsonobj = json_decode($data, true); $secret_key = $jsonobj['secret_key']; $timestamp = time(); $params['__project_name'] = PROJECT_NAME; $params['__service_name'] = $service_name; $params['__timestamp'] = $timestamp; $params['__sign'] = _internalSign($secret_key, $timestamp, $params); }