2016-10-26 33 views
0

我正在讀取緩衝區中的.docx文件並將其成功寫入新文件。 (在C中使用fread和fwrite)但是現在我想爲了加密的目的而增強此項目的範圍。我希望能夠操作緩衝區,然後將其寫入新文件。如何讀取,操縱和編寫.docx文件c

現在有一個問題可能是,我需要什麼操作?它可能是任何東西,就像我在緩衝區的位置15寫字符'一樣。然後寫下這個新的緩衝區(在位置15有字符',但緩衝區的其餘部分保持不變)一個新的.docx文件。

buffer[15] = 's'; 

當我這樣做時,創建的文件已損壞。由於我並不完全瞭解.docx文件的結構,因此該字節數15可能是一些潛在標識符,標題或創建非損壞文件所需的.docx文件的任何重要信息。

不過,我知道的.docx內部結構的事情是:

  1. 它包含的XML文件中,已壓縮到一起。

  2. 寫入.docx文件的內容(例如,我有一個名爲test.docx的文件,它包含「你好,你好嗎?」),那麼內容「你好,你好嗎?」存儲在XML文件中。

  3. 在壓縮到一起的文件中有一個.rels(未確認)擴展文件,它告訴MS關於內容存儲在文件中的位置,即在何處查找內容。

除了這三點,我對於.docx文件的結構知之甚少。現在考慮所有這些,我希望能夠從壓縮的XML文件中提取.docx文件的內容,在緩衝區中讀取(在C中),根據需要更改緩衝區,然後創建一個新文件,與緩衝區中存在的新內容一起使用。

有人可以通過這個指導我嗎? 同時請友情提一下,如果我需要提供代碼或其他重要細節。提前致謝。

EDIT這一切

目的:

我想要做的這一切進行加密。通過對文件進行加密(使用AES),整個文件將變得不可讀,損壞,並且內部的所有內容都將從其位置改變。當我解密該文件時,該文件無法打開。我的猜測是,由於AES解密算法並不知道如何解析從解密加密文件中恢復的內容,進入新的.docx文件,因此無法正確放置內容/結構。

我試過了。原始的docx文件是14 KB,加密的docx文件是14 KB以及解密的docx文件。但是當我嘗試打開解密文件時,它說文件已損壞。另外我試圖在HEX編輯器中檢查它。正好30個字節後,解密文件只有00個字節。

+3

你在做什麼__actually__。這可能是[XY問題](http://xyproblem.info/)。 –

+1

'docx'文件應該是[OfficeOpen XML](https://en.wikipedia.org/wiki/Office_Open_XML)文件,它們是標準化的。辦公室以添加非標準擴展名而聞名,並且曾經存在一些關於幾乎沒有記錄或根本沒有記錄的功能的爭議。我建議你試着找一個圖書館來爲你處理這些文件,而不是試圖自己去做。 –

+0

@MichaelWalz我想在緩衝區中讀取.docx文件的內容,並在該緩衝區中添加我喜歡的任何內容,然後使用它創建一個新的.docx文件。 – user52327

回答

1

DOCX文件基於OPC和OOXML。 OPC基於Zip。 OOXML基於XML。因此,您可以使用Zip和XML工具對DOCX文件進行操作。除此之外,爲了得到更好的指導,你必須更具體地說明你想做什麼。

將字符戳到XML文件中的隨機索引位置的操作是在錯誤的抽象級別上進行的。