Я пытаюсь выполнить симметричное шифрование некоторых данных с помощью функции Zend_Filter_Encrypt. Проблема в том, что если я зашифрую некоторые данные, а затем расшифрую их, за расшифрованными данными будут нулевые байты, и я понятия не имею, почему.
Например: Открытый текст: test Зашифрованный: ����pk� Расшифрованный: test����
Похоже, что в конец расшифрованного текста добавляются нулевые байты, чтобы сделать его длину равной некоторому 2 ^ n (строка из 11 символов дополняется до 16 => 2 ^ 4). Самым очевидным было бы просто убрать этих персонажей, но я хочу знать, почему это происходит...
Это код, который я использую, который отличается от того, как документация требует, чтобы вы делали это, потому что их код просто не работает для меня (см.: http://framework.zend.com/manual/en/zend.filter.set.html)
define('VECTOR','EXfPCW23'); //example, not the actual used VECTOR / KEY
$key = 'lolwatlolwat';
public function encryptPassword($password, $key)
{
$filter = new Zend_Filter_Encrypt();
$filter->setEncryption(array('key' => $key));
$filter->setVector(VECTOR);
return $filter->filter($password);
}
public function decryptPassword($password, $key)
{
$filter = new Zend_Filter_Decrypt();
$filter->setEncryption(array('key' => $key));
$filter->setVector(VECTOR);
return $filter->filter($password);
}