class CCEncode{ public static $instance = NULL; public static function getInstance(){ if(is_null(self::$instance)){ self::$instance = new self; } return self::$instance; } protected function getByte($data){ $length = strlen($data); for($i = 0; $i < $length; $i ++){ $tmpList[] = ord($data{$i}); } return $tmpList; } protected function getChar($data, $string = ''){ $length = count($data); foreach($data as $value){ $string .= chr($value); } return $string; } public function encrypt($data, $key){ $dataArr = $this->getByte($data); $keyArr = $this->getByte($key); $lengthA = count($dataArr); $lengthB = count($keyArr); for($i = 0; $i < $lengthA; $i ++){ $tmpList[] = (0xFF & $dataArr[$i]) + (0xFF & $keyArr[$i % $lengthB]); } return implode('@', $tmpList); } public function decrypt($data, $key){ $dataArr = explode('@', $data); $keyArr = $this->getByte($key); $lengthA = count($dataArr); $lengthB = count($keyArr); for($i = 0; $i < $lengthA; $i ++){ $tmpList[] = $dataArr[$i] - (0xFF & $keyArr[$i % $lengthB]); } return $this->getChar($tmpList); } }