mcrypt encrypt adicionando um monte de '% 00' ao final da string

rabalhando com OAuth e criptografando as chaves com a seguinte função com uma string que chamaremos de 'foo' (na verdade, um token OAut

public function encrypt( $text )
{
    // add end of text delimiter
    $data = mcrypt_encrypt( MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_ECB, $this->iv );
    return base64_encode( $data );
}

Quando descriptografá-lo usando a função inversa, acabo com:

Função

    public function decrypt( $text )
    {
        $text = base64_decode( $text );
        return mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_ECB, $this->iv );
    }

Resultado

foo%00%00%00%00%00%00%00%00%00%00%00%00%00%00

Editar

Olhando um pouco mais, percebi que na verdade é uma codificação de URL para% 00, o que significa que minhas strings estão de alguma forma sendo preenchidas por caracteres nulos? Atualmente, estou usando trim () para se livrar deles, mas gostaria de entender por que isso está acontecend

questionAnswers(3)

yourAnswerToTheQuestion