00001 <?php
00024 if (!function_exists('array_walk_recursive')){
00032 function array_walk_recursive(&$input, $funcname, $userdata = ""){
00033 if(!is_callable($funcname)){
00034 return false;
00035 }
00036 if(!is_array($input)){
00037 return false;
00038 }
00039 foreach($input as $key => $value){
00040 if(is_array($input[$key])){
00041 array_walk_recursive($input[$key], $funcname, $userdata);
00042 }else{
00043 $saved_value = $value;
00044 if(!empty($userdata)){
00045
00046 call_user_func($funcname, &$value, $key, $userdata);
00047 }else{
00048
00049 call_user_func($funcname, &$value, $key);
00050 }
00051 if ($value != $saved_value){
00052 $input[$key] = $value;
00053 }
00054 }
00055 }
00056 return true;
00057 }
00058 }
00059 if(!defined('Z__php_str_md5'))define('Z__php_str_md5', 'md5()');
00060 if(!defined('Z__php_str_sha1'))define('Z__php_str_sha1', 'sha1()');
00065 class zCrypt{
00079 function encrypt($str, $base64 = false){
00080 global ${Z_IN_CRYPT_VAR_NAME};
00081 $crypt = &${Z_IN_CRYPT_VAR_NAME};
00082 if(!is_array($str)){
00083 if($base64){
00084 return base64_encode($crypt->encrypt((string)$str));
00085 }
00086 return $crypt->encrypt((string)$str);
00087 }else{
00088 if(array_walk_recursive($str, array('zCrypt', 'encrypt'), array_pad(array(), count($str), $base64)))
00089 return $str;
00090 else
00091 return false;
00092 }
00093 }
00103 function decrypt($str, $base64 = false){
00104 global ${Z_IN_CRYPT_VAR_NAME};
00105 $crypt = &${Z_IN_CRYPT_VAR_NAME};
00106 if(!is_array($str)){
00107 if($base64){
00108 return $crypt->decrypt(base64_decode($str));
00109 }
00110 return $crypt->decrypt((string)$str);
00111 }else{
00112 foreach($str as $key => $val){
00113 $str[$key] = zCrypt::decrypt($val, $base64);
00114 }
00115 return $str;
00116 }
00117 }
00125 function encode($str, $base64 = false){
00126 return zCrypt::encrypt($str, $base64);
00127 }
00135 function decode($str, $base64 = false){
00136 return zCrypt::decrypt($str, $base64);
00137 }
00145 function enc($str, $base64 = false){
00146 return zCrypt::encrypt($str, $base64);
00147 }
00155 function dcd($str, $base64 = false){
00156 return zCrypt::decrypt($str, $base64);
00157 }
00167 function hash($str){
00168 switch(Z_HASH_ALGO){
00169 case 'Z__php_str_md5':
00170 $ret = md5($str);
00171 break;
00172 case 'Z__php_str_sha1':
00173 $ret = sha1($str);
00174 break;
00175 default:
00176 $ret = bin2hex(mhash(Z_HASH_ALGO, $str));
00177 break;
00178 }
00179 if(!Z_HASH_ENC){
00180 return $ret;
00181 }else{
00182 return zCrypt::encrypt($ret, true);
00183 }
00184 }
00195 function denc($str, $key = null){
00196 global ${Z_IN_CRYPT_VAR_NAME};
00197 $crypt = &${Z_IN_CRYPT_VAR_NAME};
00198 if(!method_exists($crypt, 'denc')){
00199 perror('Sorry you must use either mcrypt or both xor and mcrypt as Encryption driver to use this function CURRENTLY');
00200 return false;
00201 }
00202 return $crypt->denc((string)$str, $key);
00203 }
00212 function ddcd($str, $key = null){
00213 global ${Z_IN_CRYPT_VAR_NAME};
00214 $crypt = &${Z_IN_CRYPT_VAR_NAME};
00215 if(!method_exists($crypt, 'ddcd')){
00216 perror('Sorry you must use either mcrypt or both xor and mcrypt as Encryption driver to use this function CURRENTLY');
00217 return false;
00218 }
00219 return $crypt->ddcd($str, $key);
00220 }
00226 function mcrypt_aviliable(){
00227 if(function_exists('mcrypt_module_open')){
00228 return true;
00229 }
00230 else return false;
00231 }
00239 function menc($string,$key = null){
00240 global $app_data;
00241 if(!mcrypt_aviliable()){
00242 perror('Sorry Mcrypt is not aviliable');
00243 return false;
00244 }
00245 if($key == null){
00246 $data = parse_ini_file(ZIGROOT.DRS.Z_DIR_PROJECTS.DRS.Z_PROJECT_DIR.DRS.ZIGSETTINGSDIR.DRS.'mcpt.ini.php', false);
00247 $key = $data['mkey'];
00248 }
00249 srand((double) microtime() * 1000000);
00250 $key = md5($key);
00251 $key_size = mcrypt_get_key_size(SEC_MCRYPT_ALGO, SEC_MCRYPT_MODE);
00252 if(strlen($key) > $key_size){
00253
00254 $key = substr($key, 0, $key_size);
00255 }
00256 $td = mcrypt_module_open(SEC_MCRYPT_ALGO, '',SEC_MCRYPT_MODE, '');
00257 $key = substr($key, 0, mcrypt_enc_get_key_size($td));
00258 $iv_size = mcrypt_enc_get_iv_size($td);
00259 $iv = mcrypt_create_iv($iv_size, SEC_MCRYPT_IV_SRC);
00260 if(mcrypt_generic_init($td, $key, $iv) != -1){
00261 $c_t = mcrypt_generic($td, $string);
00262 mcrypt_generic_deinit($td);
00263 mcrypt_module_close($td);
00264 $c_t = $iv.$c_t;
00265 return $c_t;
00266 }
00267 }
00275 function mdcd($string,$key = null){
00276 if(!mcrypt_aviliable()){
00277 perror('Sorry Mcrypt is not aviliable');
00278 return false;
00279 }
00280 if($key == null){
00281 $data = parse_ini_file(ZIGROOT.DRS.Z_DIR_PROJECTS.DRS.Z_PROJECT_DIR.DRS.ZIGSETTINGSDIR.DRS.'mcpt.ini.php', false);
00282 $key = $data['mkey'];
00283 }
00284 $key = md5($key);
00285 $key_size = mcrypt_get_key_size(SEC_MCRYPT_ALGO, SEC_MCRYPT_MODE);
00286 if(strlen($key) > $key_size){
00287
00288 $key = substr($key, 0, $key_size);
00289 }
00290 $td = mcrypt_module_open(SEC_MCRYPT_ALGO, '',SEC_MCRYPT_MODE, '');
00291 $key = substr($key, 0, mcrypt_enc_get_key_size($td));
00292 $iv_size = mcrypt_enc_get_iv_size($td);
00293 $iv = substr($string,0,$iv_size);
00294 $string = substr($string,$iv_size);
00295 if (mcrypt_generic_init($td, $key, $iv) != -1){
00296 $c_t = mdecrypt_generic($td, $string);
00297 mcrypt_generic_deinit($td);
00298 mcrypt_module_close($td);
00299 return $c_t;
00300 }
00301 }
00312 function tenc($str, $key = null){
00313 global ${Z_IN_CRYPT_VAR_NAME};
00314 $crypt = &${Z_IN_CRYPT_VAR_NAME};
00315 if(!method_exists($crypt, 'tenc')){
00316 perror('Sorry you must use either mcrypt or both xor and mcrypt as Encryption driver to use this function CURRENTLY');
00317 return false;
00318 }
00319 return $crypt->tenc($str, $key);
00320 }
00328 function tdcd($str, $key = null){
00329 global ${Z_IN_CRYPT_VAR_NAME};
00330 $crypt = &${Z_IN_CRYPT_VAR_NAME};
00331 if(!method_exists($crypt, 'tenc')){
00332 perror('Sorry you must use either mcrypt or both xor and mcrypt as Encryption driver to use this function CURRENTLY');
00333 return false;
00334 }
00335 return $crypt->tdcd($str, $key);
00336 }
00337 }
00339 ?>