<?php
/*
+--------------------------------------------------------------------------
|   CubeCart 4
|   ========================================
|	CubeCart is a registered trade mark of Devellion Limited
|   Copyright Devellion Limited 2006. All rights reserved.
|   Devellion Limited,
|   5 Bridge Street,
|   Bishops Stortford,
|   HERTFORDSHIRE.
|   CM23 2JU
|   UNITED KINGDOM
|   http://www.devellion.com
|	UK Private Limited Company No. 5323904
|   ========================================
|   Web: http://www.cubecart.com
|   Email: info (at) cubecart (dot) com
|	License Type: CubeCart is NOT Open Source Software and Limitations Apply 
|   Licence Info: http://www.cubecart.com/v4-software-license
+--------------------------------------------------------------------------
|	encrypt.inc.php
|   ========================================
|	Class Encrypts Data
+--------------------------------------------------------------------------
*/
if (!defined('CC_INI_SET')) die("Access Denied");

class encryption {
	var $td;
	var $iv;
	var $ks;
	var $key;
	
	##############################################

	function __construct($keyArray = null) {
		$this->encryption($keyArray);
	}
	
	function encryption($keyArray = null) {
		$this->td	= mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', 'ecb', '');
		$this->iv	= mcrypt_create_iv(mcrypt_enc_get_iv_size($this->td), MCRYPT_RAND);
		$this->ks	= mcrypt_enc_get_key_size($this->td);
		if (!is_null($keyArray) && is_array($keyArray)) $this->generateKey($keyArray);
	}
	
	##############################################
	
	function __destruct() {
		$this->close();
	}
	
	function close() {
		@mcrypt_module_close($this->td);
	}
	
	##############################################
	
	function generateKey($keyArray) {
		$this->key	= substr(md5(implode('@', $keyArray)), 0, $this->ks);
	}
	
	function encrypt($data) {
		mcrypt_generic_init($this->td, $this->key, $this->iv);
		$stringEncrypted = mcrypt_generic($this->td, $data);
		mcrypt_generic_deinit($this->td);
		return $stringEncrypted;
	}
	
	function decrypt($stringEncrypted) {
		if (!empty($stringEncrypted)) {
			mcrypt_generic_init($this->td, $this->key, $this->iv);
			$stringDecrypted = mdecrypt_generic($this->td, $stringEncrypted);
			mcrypt_generic_deinit($this->td);
			return trim($stringDecrypted);
		}
	}
}
?>