00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 if (!function_exists('mcrypt_encrypt')) {
00015 trigger_error('Mcrypt functions are not available', E_USER_ERROR);
00016 return 0;
00017 }
00018
00021 class ADODB_Encrypt_MCrypt {
00024 var $_cipher;
00025
00028 var $_mode;
00029
00032 var $_source;
00033
00036 function getCipher() {
00037 return $this->_cipher;
00038 }
00039
00042 function setCipher($cipher) {
00043 $this->_cipher = $cipher;
00044 }
00045
00048 function getMode() {
00049 return $this->_mode;
00050 }
00051
00054 function setMode($mode) {
00055 $this->_mode = $mode;
00056 }
00057
00060 function getSource() {
00061 return $this->_source;
00062 }
00063
00066 function setSource($source) {
00067 $this->_source = $source;
00068 }
00069
00072 function ADODB_Encrypt_MCrypt($cipher = null, $mode = null, $source = null) {
00073 if (!$cipher) {
00074 $cipher = MCRYPT_RIJNDAEL_256;
00075 }
00076 if (!$mode) {
00077 $mode = MCRYPT_MODE_ECB;
00078 }
00079 if (!$source) {
00080 $source = MCRYPT_RAND;
00081 }
00082
00083 $this->_cipher = $cipher;
00084 $this->_mode = $mode;
00085 $this->_source = $source;
00086 }
00087
00090 function write($data, $key) {
00091 $iv_size = mcrypt_get_iv_size($this->_cipher, $this->_mode);
00092 $iv = mcrypt_create_iv($iv_size, $this->_source);
00093 return mcrypt_encrypt($this->_cipher, $key, $data, $this->_mode, $iv);
00094 }
00095
00098 function read($data, $key) {
00099 $iv_size = mcrypt_get_iv_size($this->_cipher, $this->_mode);
00100 $iv = mcrypt_create_iv($iv_size, $this->_source);
00101 $rv = mcrypt_decrypt($this->_cipher, $key, $data, $this->_mode, $iv);
00102 return rtrim($rv, "\0");
00103 }
00104
00105 }
00106
00107 return 1;
00108
00109 ?>