senha = $senha; } function get_rnd_iv($iv_len) { $iv = ''; while ($iv_len-- > 0) $iv .= chr(mt_rand() & 0xff); return $iv; } function encriptar($texto_claro, $iv_len = 16) { $texto_claro .= "\x13"; $n = strlen($texto_claro); if ($n % 16) $texto_claro .= str_repeat("\0", 16 - ($n % 16)); $i = 0; $texto_cripto = cifra::get_rnd_iv($iv_len); $iv = substr($this->senha ^ $texto_cripto, 0, 512); while ($i < $n) { $bloco = substr($texto_claro, $i, 16) ^ pack('H*', sha1($iv)); $texto_cripto .= $bloco; $iv = substr($bloco.$iv, 0, 512) ^ $this->senha; $i += 16; } return base64_encode($texto_cripto); } function decriptar($texto_cripto, $iv_len = 16) { $texto_cripto = base64_decode($texto_cripto); $n = strlen($texto_cripto); $i = $iv_len; $texto_claro = ''; $iv = substr($this->senha ^ substr($texto_cripto, 0, $iv_len), 0, 512); while ($i < $n) { $bloco = substr($texto_cripto, $i, 16); $texto_claro .= $bloco ^ pack('H*', sha1($iv)); $iv = substr($bloco.$iv, 0, 512) ^ $this->senha; $i += 16; } return stripslashes(preg_replace('/\\x13\\x00*$/', '', $texto_claro)); } } ?>