ну, вроде такой код работает посмотрим как в связке с прочими будет ишачить | Код | $crypter = new dec_ecb_crypter(); $crypter->create(); $crypter->gen_key('password');
$str = 'This is very important data немного тескта по русски';
$code = $crypter->encrypt($str);
$text = $crypter->decrypt($code);
$crypter->close();
class dec_ecb_crypter { var $resource; var $iv = '12345678'; var $key = ''; var $key_size = 0; var $key_source = ''; var $create_stamp_limit = 0; var $key_time_life = 3600; var $open = false; var $auto_reload = false; function dec_ecb_crypter() {} function create() { $this->create_stamp_limit = time() + $this->key_time_life; $this->resource = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, ''); $this->key_size = mcrypt_enc_get_key_size($this->resource); } function gen_key($key_source = '') { if(empty($key_source)) { $key_source = rand(100, 9999); } $this->key_source = $key_source; $this->key = substr(md5($this->key_source), 0, $this->key_size); $this->open = true; } function set_key($key) { $this->key = $key; $this->key_size = strlen($this->key); } function prov_time_life() { $time = time(); if($this->create_stamp_limit < $time) { return false; } return true; } function set_iv() { $this->auto_reload(); $this->iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($this->resource), MCRYPT_RAND); } function encrypt($data = '') { $this->auto_reload(); mcrypt_generic_init($this->resource, $this->key, $this->iv); $ret = mcrypt_generic($this->resource, $data); mcrypt_generic_deinit($this->resource); return $ret; } function decrypt($data = '') { $this->auto_reload(); mcrypt_generic_init($this->resource, $this->key, $this->iv); $ret = mdecrypt_generic($this->resource, $data); mcrypt_generic_deinit($this->resource); $ret = $this->clear_end($ret); return $ret; } function clear_end($ret) { $len = strlen($ret); $null = pack('x1'); for($i = $len - 1; $i >= 0; $i--) { $last = substr($ret, $i, 1); if($last === $null) { $ret = substr($ret, 0, -1); } else { break; } } return $ret; } function close() { mcrypt_module_close($this->resource); $this->open = false; } function auto_reload() { if(!$this->auto_reload) { return; } $prov = $this->prov_time_life(); if(!$prov) { $this->reload(); } } function reload($key_source = '') { if(empty($key_source)) { $key_source = $this->key_source; } if($this->open) { $this->close(); } $this->create(); $this->gen_key($key_source); } }
|
|