2010-09-01

Clase para encriptar y desencriptar con Mcrypt en PHP.

Esta clase proporciona la funcionalidad para cifrar y descifrar una cadena de texto. La clase hace uso de la extensión mcrypt PHP que ofrece la posibilidad de crear dos cifrado manera, o decodificación de los mensajes de texto. 


<?php
// make it of break iterror_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


Ejemplo de Uso

 <?php
// a new proCrypt instance$crypt = new proCrypt;
// encrypt the string$encoded $crypt->encrypt'my message');
echo 
$encoded."\n";
// decrypt the stringecho $crypt->decrypt$encoded ) . "\n";
?>


Fuente 

No hay comentarios: