Zend Filter Encryption / Decryption добавляет ноль байтов при расшифровке - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь выполнить симметричное шифрование некоторых данных с помощью функции Zend_Filter_Encrypt. Проблема в том, что если я зашифровал некоторые данные, а затем расшифровал их, за дешифрованными данными стоят нуль-байты, и я понятия не имею, почему.

Например: Открытый текст: тест Зашифровано: pk Расшифровано: тест

Кажется, что в конце расшифрованного текста добавляется ноль байтов, чтобы его длина была равна примерно 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);
    }

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Вы должны использовать функцию rtrim для расшифровки строки.

Пример:

   public function decryptPassword($password, $key)
    {
            $filter = new Zend_Filter_Decrypt();
            $filter->setEncryption(array('key' => $key));
            $filter->setVector(VECTOR);

            return rtrim($filter->filter($password);
    }
0 голосов
/ 23 сентября 2011

В документации Zend рассказывается, как задать отступы? Если это так, то укажите обратимый отступ; как вы обнаружили, заполнение нулями необратимо. В противном случае, выясните, какого размера ожидает открытый текст Zend, и добавьте PKCS7 padding самостоятельно. Это легко узнать и потом удалить.

...