public function decrypt($data)
    {
        if (!is_string($data) || !preg_match('/^[0-9A-Fa-f]*$/', $data)) {
            throw new \InvalidArgumentException('blowfishDecryptCBC require hex input', 1502);
        }

        $data = pack('H*', $data);

        if ($this->iv === null) {
            $return = mcrypt_decrypt($this->cipher, $this->key, $data, $this->mode);
        } else {
            $return = mcrypt_decrypt($this->cipher, $this->key, $data, $this->mode, $this->iv);
        }

        return rtrim($return, "\0");
    }