Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/08/2006, 06:46
alblan
 
Fecha de Ingreso: agosto-2006
Mensajes: 41
Antigüedad: 20 años, 1 mes
Puntos: 2
Aquí tienes una clase que te permite encriptar una cadena de caracteres y hacer la operación inversa.

Código PHP:
<?php
define 
(KEY,'this is a very long key, even too long for the cipher');
class 
Crypt {
    function 
encrypt($str) {
        
/* Open module, and create IV */
        
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CFB, '');
        
$key = substr(sha1(KEY), 0, mcrypt_enc_get_key_size($td));
        
$iv_size = mcrypt_enc_get_iv_size($td);
        
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

        
/* Initialize encryption handle */
        
if (mcrypt_generic_init($td, $key, $iv) != -1) {

            
/* Encrypt data */
            
$c_t = rtrim(mcrypt_generic($td, $str));
            
mcrypt_generic_deinit($td);
            
mcrypt_module_close($td);
        }
        return 
$iv.$c_t;
    }
        
  function 
decrypt($str) {
        
/* Open module, and create IV */
        
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CFB, '');
        
$key = substr(sha1(KEY), 0, mcrypt_enc_get_key_size($td));
        
$iv_size = mcrypt_enc_get_iv_size($td);
        
$iv = substr($str,0,$iv_size);
        
$str = substr($str,$iv_size);

        
/* Initialize encryption handle */
        
if (mcrypt_generic_init($td, $key, $iv) != -1) {

            
/* Decrypt data */
            
$p_t = mdecrypt_generic($td, $str);
        
            
/* Clean up */
            
mcrypt_generic_deinit($td);
            
mcrypt_module_close($td);
        }
        return 
$p_t;
    }
}
?>
En el define del principio de la clase le indicas tu clave secreta.

Para recuperar el valor encriptado:
Código PHP:
<?php
$c 
= new Crypt();
$enc = $c->encrypt('very important data');
?>
Para recuperar el valor original:
Código PHP:
<?php
$c 
= new Crypt();
$ori = $c->decrypt($enc);
?>
Albert Lanchas