Porto

Two Way Encryption With PHP Mcrypt

Two Way Encryption With PHP Mcrypt

This class provides the functionality to encrypt and decrypt a text string. The class makes use of the PHP mcrypt extension which provides the ability to create two way encryption, or decoding of text messages.


<?php

// make it of break it
error_reporting(E_ALL);

/**
* Class to provide 2 way encryption of data
*
* @author    Kevin Waterson
* @copyright    2009    PHPRO.ORG
*
*/
class proCrypt 
{
    
/**
    *
    * This is called when we wish to set a variable
    *
    * @access    public
    * @param    string    $name
    * @param    string    $value
    *
    */
    
public function __set$name$value )
    {
        switch( 
$name)
        {
            case 
'key':
            case 
'ivs':
            case 
'iv':
            
$this->$name $value;
            break;

            default:
            throw new 
Exception"$name cannot be set" );
        }
    }

    
/**
    *
    * Gettor - This is called when an non existant variable is called
    *
    * @access    public
    * @param    string    $name
    *
    */
    
public function __get$name )
    {
        switch( 
$name )
        {
            case 
'key':
            return 
'keee';

            case 
'ivs':
            return 
mcrypt_get_iv_sizeMCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB );

            case 
'iv':
            return 
mcrypt_create_iv$this->ivs );

            default:
            throw new 
Exception"$name cannot be called" );
        }
    }

    
/**
    *
    * Encrypt a string
    *
    * @access    public
    * @param    string    $text
    * @return    string    The encrypted string
    *
    */
    
public function encrypt$text )
    {
        
// add end of text delimiter
        
$data mcrypt_encryptMCRYPT_RIJNDAEL_128$this->key$textMCRYPT_MODE_ECB$this->iv );
        return 
base64_encode$data );
    }
 
    
/**
    *
    * Decrypt a string
    *
    * @access    public
    * @param    string    $text
    * @return    string    The decrypted string
    *
    */
    
public function decrypt$text )
    {
        
$text base64_decode$text );
        return 
mcrypt_decryptMCRYPT_RIJNDAEL_128$this->key$textMCRYPT_MODE_ECB$this->iv );
    }
// end of class

Example Usage

 
<?php

// a new proCrypt instance
$crypt = new proCrypt;

// encrypt the string
$encoded $crypt->encrypt'my message');
echo 
$encoded."\n";

// decrypt the string
echo $crypt->decrypt$encoded ) . "\n";

?>