Location: PHPKode > scripts > PHP Encryption > php-encryption/encryption.class.php
<?
/**
 * Encryption class
 *
 * @package Encryption
 * @author Ewg
 * @category Security
 * @todo Multi file
 */
class Encryption
{
	/**
	 * File content
	 * @var String
	 */
	public $content;

	/**
	 * File content not changed
	 * @var String
	 */
	public $content_source;

	/**
	 * All varibles
	 * @var Array|String
	 */
	public $vars = array ();

	/**
	 * Chains of varibles
	 * @example "class name" <=> "352=>array (370, 307)"
	 * @var Array
	 */
	private $chains = array (
	352=>array (370, 307), // class
	347=> array (370, 309), // var
	341=>array (370, 309), // public
	343=>array (370, 309), // private
	342=>array (370, 309), // protected
	299=>array (370, 307) // new
	);

	/**
	 * Forbidden for replace strings
	 * @var Array
	 */
	private $forbidden = array ('Exception', '$this');

	/**
	 * a..z
	 * @var Array
	 */
	public $abc = array ();

	/**
	 * Address of source file
	 * @var String
	 */
	public $file_source;

	/**
	 * Class activation
	 */
	public function __construct ()
	{
		if (empty ($this->abc))
		{
			$this->abc = range (a, z);
		}
	}

	/**
	 * Parse activation
	 * @param String $file_source
	 * @return Object $this
	 */
	public function parse ($file_source)
	{
		$this->content_source = file_get_contents($this->file_source = $file_source);
		$this->content = token_get_all ($this->content_source);
		foreach ($this->content as $key=>$value)
		{
			if(is_array ($value))
			{
				$this->content[$key]['2'] = token_name($value['0']);
				if (isset ($chain))
				{
					if (is_array ($chain))
					{
						if ($this->chains[$chainid][$i]===$chain['0'])
						{
							$i++;
							$chain = array ($this->chains[$chainid][$i]);
						}
						else
						{
							unset ($chain);
						}
					}
					else
					{
						$chainid = $chain;
						$i = 0;
						$end = end ($this->chains[$chainid]);
						$chain = array (reset ($this->chains[$chain]));
					}

					if ($end===$chain['0'])
					{
						if ($value['0']===$chain['0'])
						{
							$this->add ($value['1'], $value['0']);
						}
						unset ($chain);
					}
				}
				else
				{
					if (array_key_exists ($value['0'], $this->chains))
					{
						$chain = $value['0'];
					}
					else
					{
						if ($value['0']===309)
						{
							$this->add ($value['1'], 309);
						}
					}
				}
			}
		}
		return $this;
	}

	/**
	 * Add varible to action
	 * @param String $id
	 * @param Int $type
	 */
	public function add ($id, $type = false)
	{
		if (!in_array ($id, $this->vars) and !(in_array ($id, $this->forbidden)))
		{
			if ($type===307)
			{
				$type = false;
			}
			$this->vars[] = array ($id, $type);
		}
	}

	/**
	 * Main action - code
	 * @param String $file
	 * @return Json vars
	 */
	public function codeit ($file)
	{
		foreach ($this->vars as $key=>$value)
		{
			$temp[$value['0']] = ($value['1']? '$': '').$this->gen_name ();
		}
		$this->content_source = strtr ($this->content_source, $temp);
		file_put_contents($file, $this->content_source);
		return $this->vars = json_encode(array ($this->file_source=>$temp));
	}

	/**
	 * Generate unique name
	 * @return String
	 */
	private function gen_name ()
	{
		return $this->abc[rand (0, 25)].$this->abc[rand (0, 25)].str_repeat('_', rand (2, 15)).$this->abc[rand (0, 25)];
	}
}
Return current item: PHP Encryption