gpt4 book ai didi

c - 如何在c中读取、操作和写入.docx文件

转载 作者:行者123 更新时间:2023-11-30 15:04:30 24 4
gpt4 key购买 nike

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

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

buffer[15] = 's';

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

但是,我对 .docx 内部结构的了解是:

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

  2. .docx 文件中写入的内容(例如,我有一个名为 test.docx 的文件,它包含“Hello, how are you?”),然后是内容“Hello, how are you?” ”存储在 XML 文件中。

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

除了这三点之外,我对 .docx 文件的结构了解不多。现在考虑到这一切,我希望能够从压缩在一起的 XML 文件中提取 .docx 文件的内容,在缓冲区中读取它(用 C 语言),根据需要更改缓冲区,然后创建一个新文件,缓冲区中存在的新内容。

有人可以指导我解决这个问题吗?如果我需要提供代码或任何其他重要细节,请另外提及。提前致谢。

编辑

这一切的目的:

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

我已经尝试过了。原始 docx 文件大小为 14 KB,加密的 docx 文件大小为 14 KB,解密后的 docx 文件大小为 14 KB。但是当我尝试打开解密的文件时,它说文件已损坏。我还尝试在十六进制编辑器中检查它。解密的文件在 30 字节之后只有 00 字节。

最佳答案

DOCX 文件基于 OPC 和 OOXML。 OPC 基于 Zip。 OOXML 基于 XML。因此,您可以使用Zip和XML工具来操作DOCX文件。除此之外,您必须更具体地说明您希望做什么,以便获得更好的指导。

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

关于c - 如何在c中读取、操作和写入.docx文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40265061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com