【问题标题】:Does File.ReadAllBytes work on word doc and docx? [closed]File.ReadAllBytes 是否适用于 word doc 和 docx? [关闭]
【发布时间】:2017-02-05 12:02:41
【问题描述】:

我需要加密一个 word 文件,为此我不仅需要读取 word 文件的文本,因为它可能还包含图像,所以我需要将 Word Doc 或 Docx 内容作为字节获取然后加密它们然后创建一个具有新扩展名的新文件,例如 DocSec,并将字节写入此文件。

我的问题是:是否可以使用 File.ReadAllBytes 读取单词 doc\x 的内容,这样它也会考虑图像?

如果不是,推荐的方法是什么?

【问题讨论】:

  • 很抱歉,如果你不得不问这个问题,你不应该编写与安全相关的软件。文件在您处理后无法再在 Word 中打开这一事实并不意味着您的软件是安全的。从字节流的角度来看,Word 文件中的“文本字节”和“图像字节”没有区别。
  • 这里简单直接的回答是“是”。
  • @CodeCaster “文件在您处理后无法再在 Word 中打开这一事实并不意味着您的软件是安全的。” - 当然不是,这就是为什么我还要加密文件的内容。
  • @HenkHolterman,您本可以将其作为答案并获得 V 形标志。
  • 详细信息太少,无法给出好的答案。我通常不会使用基于 byte[] 的任何东西,而是使用 FileStream 和 EncryptionStream。

标签: c# file encryption ms-word doc


【解决方案1】:

当然你可以使用任何文件。

所有类型的文件都是一个字节序列。

一般准则

要加密的步骤是

  1. 打开文件(如果文件很大,请考虑使用 read() 而不是 readAllBytes())
  2. 使用您最喜欢的算法来加密读取的字节数。
  3. 将新字节写入新文件(例如 newdoc.docsec)。
  4. 关闭这两个文件。
  5. 删除原始文件。

现在 MS Word 无法再读取您的文件了。

解密

  1. 打开您的脚本文件(例如 newdoc.docsec)
  2. 在读取的字节上使用您的解密算法。
  3. 将新字节写入新文件(例如 mydoc.doc)。
  4. 关闭这两个文件。
  5. 删除 newdoc.docsec 文件。

现在您可以使用 MS Word 打开它了。

CodeProject 上的完整示例File Encryption and Decryption in C#

【讨论】:

  • 谢谢亲爱的朋友
  • 不客气
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多