在文件末尾添加或删除空字节是否安全?

时间:2015-04-28 03:59:08

标签: python file python-2.7

从文件末尾删除尾随零或空字节总是是否安全?我担心这可能会损坏使用UTF-16编码的文件,或者出于其他原因。

此外,总是安全地将尾随零字节添加到文件的末尾吗?

作为使用Python的一个例子我通过从文件末端剥离单个字节来完成此操作,直到删除所有零字节为止:

with open('in.ext', 'rb') as file_in:
    with open('out.ext', 'wb') as file_out:
        data = file_in.read()
        while data.endswith('\x00'):
            data = data[:-1]
        file_out.write(data)

这是为了在便携式存储介质上存储和检索任意文件。我希望用零填充填充一半写入字节块(一个块包含16个字节),然后在读取数据时简单地剥离字节。

2 个答案:

答案 0 :(得分:3)

这取决于之后将使用此文件的内容。某些软件可能需要在末尾找到那些空字节,例如,如果用于填充。

对于UTF-16,字节数应该是偶数,因此您应该成对管理它们(寻找\ x00 \ x00而不是仅仅\ x00)。

答案 1 :(得分:2)

这取决于应用程序编写和读取文件。除非您知道文件的确切格式,否则默认情况下不会进行任何修改。如果您知道格式,那么显然是否需要尾随0。

编辑问题后:"存储和检索任意文件"默认情况下,它与仅随机剥离字节不兼容。字节是什么并不重要,您需要按原样保留文件。如果您需要适当的填充方案,请查看加密算法中使用的内容 - 例如PKCS7