好吧,我正在尝试gzdeflate我的代码执行一些非常低级别的分发加密,以便与eval(gzinflate('deflated_code'));
一起使用
但是,每当我尝试给收缩的字符串充气时,它都会输出错误。
例如:
echo(gzdeflate('test'));
输出+I-.�
但是当我尝试echo(gzinflate('+I-.�'));
时,它只输出Warning: gzinflate() [function.gzinflate]: data error
有什么我想念的吗?为什么输出此错误而不是test
?
答案 0 :(得分:4)
的输出
$s = gzdeflate('test');
for ($i=0; $i<strlen($s); $i++) {
printf("%02X ", ord($s[$i]));
}
是2B 49 2D 2E 01 00
。在这种情况下,最后两个字节01 00是棘手的部分
您使用echo
打印结果“string”。什么是输出媒体?
当我通过ultraedit将字符串+I-.�
复制到脚本中时,输出为2B 49 2D 2E 3F
。一个不同的结果和gzinflate()拯救的原因。
如果您真的必须在gzdeflate()结果中无法显示所有可能的“字符”的介质中显示数据,则必须以避免这些不可打印字符或以合适的方式编码的方式对结果进行编码该媒体的形式,例如通过base64_encode()。