السلام عليكم لدي هذا الكلاس وهو يستخدم لتشفير الملفات من نوع php
وهذا هو الكلاس

كود PHP:
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
 * PHP Version 5
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * {@link http://gnu.org/licenses/gpl.txt}
 */

// {{{ Constants

/* Mode constants */
define('CRYPT_MODE_BINARY'     0);
define('CRYPT_MODE_BASE64'     1);
define('CRYPT_MODE_HEXADECIMAL'2);

/* Hash algorithms constants */
define('CRYPT_HASH_MD5' 'md5');
define('CRYPT_HASH_SHA1''sha1');

// }}}
// {{{ Crypt

/**
 * Crypt class
 *
 * The Crypt class provides an easy and secure way to encrypt, decrypt
 * and hash data. It implements a cryptography method based on private
 * keys. It traverses the data to be encrypted and applies the XOR
 * operation against the values of the characters of the encryption key.
 * The decryption employs the same operation, so you'll need the key
 * used on encryptation process to recover your original data.
 *
 * NOTE: All documentation available for this package is written below.
 * If you have any doubts or sugestions, feel free to contact me! :)
 *
 * @package     Crypt Class
 * @name        Crypt
 * @author      Arthur Furlan <arthur.furlan@gmail.com>
 * @copyright   2006 (c) - Arthur Furlan <arthur.furlan@gmail.com>
 * @license     GPL v3.0 {@link http://gnu.org/licenses/gpl.txt}
 * @version     2.1
 *
 * @todo        Improve class documentation
 */
class Crypt {

    
// {{{ Attributes

    /**
     * Private key used in the creation process of the encrypted strings.
     * NOTE: This value should be as strange as possible :)
     *
     * @name        $key
     * @property    $Key
     * @access      private
     * @var         string
     */
    
private $key  __CLASS__;

    
/**
     * Set the returning mode for the encrypted strings.
     *
     * @name        $mode
     * @property    $Mode
     * @access      private
     * @var         integer
     */
    
private $mode CRYPT_MODE_BASE64;

    
/**
     * Set the hash algorithm for hash strings.
     *
     * @name        $hash
     * @property    $Hash
     * @access      private
     * @var         integer
     */
    
private $hash CRYPT_HASH_MD5;

    
// }}}
    // {{{ __construct()

    /**
     * Constructor method.
     * Set the mode to be used in the new object.
     *
     * @name        __construct()
     * @access      public
     * @param       [$mode]     integer
     * @param       [$hash]     integer
     * @return      void
     */
    
function __construct($mode null$hash null) {
        
$this->SetMode($mode);
        
$this->SetHash($hash);
    }

    
// }}}
    // {{{ __toString()

    /**
     * Overload to the object conversion to string.
     *
     * @name        __toString()
     * @access      public
     * @method      void
     * @return      string
     */
    
function __toString() {
        return 
__CLASS__ " object\n"
             
"(\n"
             
"    [Key]  => {$this->key}\n"
             
"    [Mode] => {$this->mode}\n"
             
"    [Hash] => {$this->hash}\n"
             
")\n";
    }

    
// }}}
    // {{{ __set()

    /**
     * Write methods for the class properties.
     *
     * @name        __set()
     * @access      public
     * @param       $property   string
     * @param       $value      mixed
     * @return      void
     */
    
function __set($property$value) {
        switch (
$property) {
            case 
'Key' : return $this->SetKey($value);
            case 
'Mode': return $this->SetMode($value);
            case 
'Hash': return $this->SetHash($value);
        }
    }

    
// }}}
    // {{{ __get()

    /**
     * Read methods for the class properties.
     *
     * @name        __get()
     * @access      public
     * @param       $property   string
     * @return      mixed
     */
    
function __get($property) {
        switch (
$property) {
            case 
'Key' : return $this->key;
            case 
'Mode': return $this->mode;
            case 
'Hash': return $this->hash;
        }
    }

    
// }}}
    // {{{ SetKey()

    /**
     * Set the private key used in the creation process of the
     * encrypted strings.
     *
     * @name        SetMode()
     * @access      protected
     * @param       $key        string
     * @return      void
     */
    
protected function SetKey($key) {
        
$this->key = (string) $key;
    }

    
// }}}
    // {{{ SetMode()

    /**
     * Set the current returning mode of the class.
     *
     * @name        SetMode()
     * @access      protected
     * @param       $mode       integer
     * @return      void
     */
    
protected function SetMode($mode) {
        
Crypt::IsSupportedMode($mode) && $this->mode = (int)$mode;
    }

    
// }}}
    // {{{ SetHash()

    /**
     * Set the current hash algorithm of the class.
     *
     * @name        SetHash()
     * @access      protected
     * @param       $hash       integer
     * @return      void
     */
    
protected function SetHash($hash) {
        
Crypt::IsSupportedHash($hash) && $this->hash = (int)$hash;
    }

    
// }}}
    // {{{ SupportedModes()

    /**
     * Return the list of supported modes.
     *
     * @name        SupportedModes()
     * @access      public
     * @static
     * @param       void
     * @return      void
     */
    
public static function SupportedModes() {
        return array(
CRYPT_MODE_BINARY,
                     
CRYPT_MODE_BASE64,
                     
CRYPT_MODE_HEXADECIMAL);
    }

    
// }}}
    // {{{ SupportedHashes()

    /**
     * Return the list of supported hashes.
     *
     * @name        SupportedHashes()
     * @access      public
     * @static
     * @param       void
     * @return      void
     */
    
public static function SupportedHashes() {
        return array(
CRYPT_HASH_MD5,
                     
CRYPT_HASH_SHA1);
    }

    
// }}}
    // {{{ IsSupportedMode()

    /**
     * Checks if $mode is a valid returning mode of the class.
     *
     * @name        IsSupportedMode()
     * @access      public
     * @static
     * @param       $mode       integer
     * @return      void
     */
    
public static function IsSupportedMode($mode) {
        return 
in_array($modeCrypt::SupportedModes());
    }

    
// }}}
    // {{{ IsSupportedHash()

    /**
     * Checks if $hash is a valid hash algorithm of the class.
     *
     * @name        IsSupportedHash()
     * @access      public
     * @static
     * @param       $mode       integer
     * @return      void
     */
    
public static function IsSupportedHash($hash) {
        return 
in_array($hashCrypt::SupportedHashes());
    }

    
// }}}
    // {{{ Encrypt()

    /**
     * Encrypt the data using the current returning mode.
     *
     * @name        Encrypt()
     * @access      public
     * @param       $data       mixed
     * @return      string
     */
   
public function Encrypt($data) {
        
$data = (string) $data;
        for (
$i=0;$i<strlen($data);$i++)
            @
$encrypt .= $data[$i] ^ $this->key[$i strlen($this->key)];
        if (
$this->mode == CRYPT_MODE_BINARY)
            return @
$encrypt;
        @
$encrypt base64_encode(@$encrypt);
        if (
$this->mode == CRYPT_MODE_BASE64)
            return @
$encrypt;
        if (
$this->mode == CRYPT_MODE_HEXADECIMAL)
            return 
$this->EncodeHexadecimal(@$encrypt);
    }

    
// }}}
    // {{{ Decrypt()

    /**
     * Decrypt the data using the current returning mode.
     * NOTE: You must use the same mode of the creation process.
     *
     * @name        Decrypt()
     * @access      public
     * @param       $crypt      string
     * @return      string
     */
   
public function Decrypt($crypt) {
        if (
$this->mode == CRYPT_MODE_HEXADECIMAL)
            
$crypt $this->DecodeHexadecimal($crypt);
        if (
$this->mode != CRYPT_MODE_BINARY)
            
$crypt = (string)base64_decode($crypt);
        for (
$i=0;$i<strlen($crypt);$i++)
            @
$data .= $crypt[$i] ^ $this->key[$i strlen($this->key)];
        return @
$data;
    }

    
// }}}
    // {{{ Hash()
    
    /**
     * Create a hash string using the algorithm defined in $hash.
     *
     * @name        Hash()
     * @access      public
     * @param       $data       mixed
     * @param       [$binary]   bool
     * @return      string
     */
    
public function Hash($data$binary false) {
        
$crypt = new Crypt(CRYPT_MODE_BINARY);
        
$crypt->Key $this->key;
        return 
hash($this->hash$crypt->Encrypt($data), (bool)$binary);
    }

    
// }}}
    // {{{ EncodeHexadecimal()

    /**
     * Encode the data using hexadecimal chars.
     *
     * @name        EncodeHexadecimal()
     * @access      protected
     * @param       $data       mixed
     * @return      string
     */
    
protected function EncodeHexadecimal($data) {
        
$data = (string) $data;
        for (
$i=0;$i<strlen($data);$i++)
            @
$hexcrypt .= dechex(ord($data[$i]));
        return @
$hexcrypt;
    }

    
// }}}
    // {{{ DecodeHexadecimal()

    /**
     * Decode hexadecimal strings.
     *
     * @name        DecodeHexadecimal()
     * @access      protected
     * @param       $data       string
     * @return      string
     */
    
protected function DecodeHexadecimal($hexcrypt) {
        
$hexcrypt = (string) $hexcrypt;
        for (
$i=0;$i<strlen($hexcrypt);$i+=2)
            @
$data .= chr(hexdec(substr($hexcrypt$i2)));
        return @
$data;
    }

    
// }}}

}

// }}}
?>
وهذا تطبيق على الكلاس
كود PHP:
<?php
require_once 'Crypt.class.php';

/* CRYPT_MODE_BIN */
$Crypt = new Crypt(CRYPT_MODE_BIN);
$Crypt->Key 'MY_FIRST_CRYPT_KEY';
echo 
$Crypt->Encrypt('My 1st data')  . "<br />\n";

/* CRYPT_MODE_BASE64 */
$Crypt->Mode CRYPT_MODE_BASE64;
$Crypt->Key  'MY_SECOND_CRYPT_KEY';
echo 
$Crypt->Encrypt('My 2nd data') . "<br />\n";

/* CRYPT_MODE_HEX */
$Crypt->Mode CRYPT_MODE_HEX;
$Crypt->Key  'MY_THIRD_CRYPT_KEY';
echo 
$Crypt->Encrypt('My 3rd data')  . "<br />\n";

/* CRYPT_HASH_MD5 */
echo Crypt::Hash('My 4th data'CRYPT_HASH_MD5)        . "<br />\n";
echo 
Crypt::Hash('My 4th data'CRYPT_HASH_MD5true)  . "<br />\n";

/* CRYPT_HASH_SHA1 */
echo Crypt::Hash('My 4th data'CRYPT_HASH_SHA1)       . "<br />\n";
echo 
Crypt::Hash('My 4th data'CRYPT_HASH_SHA1true) . "<br />\n";

/* Conversin the object to string */
echo $Crypt;
?>
ولم افهم منه شيء حاولت من هنا ومن هناك احط واجيب واودي ما فهمت شي
هل يمكن احد يفهمني التطبيق كيف صار؟؟
وهل هل يمكن شرح لتطبيقه على الملفات؟؟
يعني مثلا عندي ملف باسم 1.php ويحتوي على هذا الكود
كود PHP:
echo "ahmmad"
كيف يمكن ان استخدم هذا كلاس عليه؟؟
ويتشغل عادي بدون مشاكل؟؟
بانتضارك واعتذر على الاطالة