使用PHP,如何在使用Zend Framework加密文件过滤器(使用MCRYPT)和rijndael-256时删除NUL字符

时间:2012-04-02 16:39:56

标签: php zend-framework encryption

尝试解密文件时,在所有文件(PDF,XLS等)的末尾添加了几个NUL二进制字符,因此它们无法正确打开。如何在解密期间删除NUL? RTRIM似乎对dectryptedbinary数据文件(word doc,xls等)没有任何帮助。

使用rijndael-256加密/解密。

readfile(rtrim($encrypt->filter($_FILES['userfile']['tmp_name'])));

尝试在一行中完成所有工作以提高规模效率。

1 个答案:

答案 0 :(得分:4)

使用rtrim($decrypted, "\0");之类的内容删除解密邮件中的尾随NUL个字符。由于您使用的是分组密码(AES),因此必须将加密的字符串填充到块长度。

如果文件的末尾可能包含有效的NUL个字符,则此方法可能会有问题,您需要保留原始邮件长度,以便最后删除附加的填充。

特别参见Padding - Cryptography,填充方法部分。