openmind ☃   August 28, 2008  ☃  Codeigniter: Cryptography Library  (, , )

<?  if(!defined('BASEPATH')) exit('No direct script access allowed');

class Crypto
{
  private $td;
  private $cipher;
  private $mode;

  function __construct()
  {
    $this->cipher = "blowfish";
    $this->mode   = "cfb";
    $this->key    = "wha";
    $this->td     = mcrypt_module_open($this->cipher,'',$this->mode,'');
  }

  function encrypt($strValue)
  {
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($this->td), MCRYPT_RAND);
    mcrypt_generic_init($this->td, md5($this->key), $iv);

    $strEncrypted = mcrypt_generic($this->td, $strValue);
    $strEncrypted = base64_encode($iv.$strEncrypted);

    mcrypt_generic_deinit($this->td);
    return $strEncrypted;
  }

  function decrypt($strValue)
  {
    $strValue = base64_decode($strValue);

    $ivsize = mcrypt_enc_get_iv_size($this->td);
    $iv = substr($strValue, 0, $ivsize);
    $strValue = substr($strValue, $ivsize);

    mcrypt_generic_init($this->td, md5($this->key), $iv);
    $strDecrypted = mdecrypt_generic($this->td, $strValue);

    mcrypt_generic_deinit($this->td);
    return $strDecrypted;
  }
}
?>

blog comments powered by Disqus