public function aseControl($data) { if (!is_array($data) || !isset($data['ciphertext']) || !$data['ciphertext']) { return false; } $keysService = ACloudSysCoreCommon::loadSystemClass('keys', 'config.service'); $keys = $keysService->getKey123(1); if (!$keys || strlen($keys['key1']) != 128 || strlen($keys['key2']) != 128 || strlen($keys['key3']) != 128) { return false; } require_once Wind::getRealPath("ACLOUD:system.core.ACloudSysCoreAes"); $aesService = new ACloudSysCoreAes(); $key = $aesService->encrypt($keys['key3'], $keys['key2'], 256); if (!$key) { return false; } $plaintext = $aesService->strcode($data['ciphertext'], $key, 'DECODE'); if (!$plaintext) { return false; } $params = ACloudSysCoreHttp::splitHttpQuery($plaintext); if (!is_array($params)) { return false; } $tmp = ACloudSysCoreCommon::arrayIntersectAssoc($params, $data); if (is_array($tmp) && count($tmp) > 0 && count($tmp) == count($params) && $tmp['securecode'] === $data['securecode']) { return true; } return false; }
public function verifyWithAES($ciphertext, $plaintext) { if (!$ciphertext || !$plaintext) { return false; } $keysService = ACloudSysCoreCommon::loadSystemClass('keys', 'config.service'); $keys = $keysService->getKey123(1); if (!$keys || strlen($keys['key1']) != 128 || strlen($keys['key2']) != 128 || strlen($keys['key3']) != 128) { return false; } require_once Wind::getRealPath('ACLOUD:.system.core.ACloudSysCoreAes'); $aesService = new ACloudSysCoreAes(); $key = $aesService->encrypt($keys['key3'], $keys['key2'], 256); if (!$key) { return false; } if ($plaintext === ($ciphertext = $aesService->strcode($ciphertext, $key, 'DECODE')) && strlen($plaintext) == strlen($ciphertext)) { return true; } return false; }