Если вы хотите использовать bin2hex для «кодирования» двоичных данных, чтобы их можно было легко переносить по http / url, вот что вы можете сделать, чтобы преобразовать их обратно в двоичные:
$encoded = bin2hex($some_binary);
$decoded = pack('H*', $encoded);
Другие второстепенныеПроблемы с вашим классом были ссылки на $key
и $vector
.Поскольку оба метода являются статическими, они не могут получить доступ только к $this
, а $key
и $vector
не определены.
Для вас должен работать следующий код:
class Application_Model_Login
{
const ENC_KEY = "thisisakeytolock";
const VECTOR = "myvector";
public static function getEnc($input)
{
$filter = new Zend_Filter_Encrypt(array('adapter' => 'mcrypt', 'key' => self::ENC_KEY));
$filter->setVector(self::VECTOR);
$encrypted = $filter->filter($input);
return bin2hex($encrypted); //hints: rawurlencode(..) works
return $encrypted;
}
public static function getDec($input)
{
$filter = new Zend_Filter_Decrypt(array('adapter' => 'mcrypt', 'key' => self::ENC_KEY));
$filter->setVector(self::VECTOR);
$decoded = pack('H*', $input);
$decrypted = $filter->filter($decoded);
return $decrypted;
}
}
В качестве альтернативы выможет использовать base64_encode в вашей функции getEnc и base64_decode в функции getDec.Base64 обычно используется для представления двоичных данных из шифрования.