PHP Classes
elePHPant
Icontem

File: encryption.class.php

Recommend this page to a friend!
  Classes of Ewg  >  PHP Code Encryption  >  encryption.class.php  >  Download  
File: encryption.class.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Code Encryption
Obfuscate PHP scripts by replacing variable names
Author: By
Last change: update
Date: 10 years ago
Size: 3,415 bytes
 

 

Contents

Class file image Download
<?
/**
 * 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)];
    }
}