如何在c

时间:2016-10-26 14:31:35

标签: c xml docx

我正在缓冲区中读取.docx文件并成功将其写入新文件。 (在C中使用fread和fwrite)但是现在我想为了加密目的而增强这个项目的范围。我希望能够操作缓冲区,然后将其写入新文件中。

现在有一个问题,我需要什么操作? 它可能是真的,就像我在缓冲区的位置15中写字符''。如下所示,然后写入这个新缓冲区(在位置15处具有字符's,但缓冲区的其余部分保持不变)新的.docx文件。

buffer[15] = 's';

当我这样做时,创建的文件已损坏。由于我不完全了解.docx文件的结构,因此该字节数15可能是创建非损坏文件所需的.docx文件的一些潜在标识符,标题或任何重要信息。

但是,我所知道的.docx内部结构是:

  1. 它由压缩在一起的XML文件组成。

  2. 用.docx文件写的内容,(例如我有一个名为test.docx的文件,它包含“你好,你好吗?”)然后内容“你好,你好吗? “存储在XML文件中。

  3. 在那些压缩在一起的文件中有一个.rels(未确认)扩展文件,告诉MS关于内容存储在文件中的位置,即在哪里查找内容。

  4. 除了这3点,我对.docx文件的结构了解不多。现在考虑所有这些,我希望能够从压缩的XML文件中提取.docx文件的内容,在缓冲区中读取它(在C中),根据需要更改缓冲区,并创建一个新文件,使用缓冲区中的新内容。

    有人可以指导我完成这件事吗? 如果我需要提供代码或任何其他重要细节,请提及。提前谢谢。

    修改

    所有这些的目的:

    我想为加密做这一切。通过加密文件(使用AES),整个文件将变得不可读,损坏并且内部的所有内容都将从其位置更改。当我解密该文件时,该文件无法打开。我的猜测是,由于AES解密算法不知道如何将从解密加密文件中恢复的内容解析为新的.docx文件,因此无法正确放置内容/结构。

    我试过了。原始docx文件为14 KB,加密的docx文件为14 KB,以及解密的docx文件。但是当我尝试打开解密文件时,它说文件已损坏。我也尝试在HEX编辑器中检查它。正好30个字节后,解密文件只有00个字节。

1 个答案:

答案 0 :(得分:1)

DOCX文件基于OPC和OOXML。 OPC基于Zip。 OOXML基于XML。因此,您可以使用Zip和XML工具来操作DOCX文件。除此之外,为了获得更好的指导,你必须更加具体地了解你想做什么。

将字符戳入XML文件中的随机索引位置是在错误的抽象级别上运行。