读取/写入Excel 2007密码保护的文档

Office 2007使用什么方法进行encryption(从Office菜单中selectencryption并设置密码时)?

我的C#应用​​程序需要创build并读取encryption的Excel 2007文件(.xlsx)。 这些文件保持从Excel访问是很重要的,所以我必须使用微软的encryption方法,不能自己酿造。

正常的Excel 2007文件是一个ZIP压缩文件,我正在使用ExcelPackage访问它,它在内部使用* System.Io.Packaging.Package *(.net 3.0的一部分)。

但是,Office中的encryption不是标准的ZIPencryption。 包类似乎不支持encryption,并报告损坏的文件。 7Zip打开文件(没有提供密码),并显示一些二进制文件里面。

Office 2007使用OLE文档(与用于二进制Office文档的容器格式相同)来存储encryption的文档。

[MS-OFFCRYPTO]:Office文档密码结构规范应该包含所使用的数据结构和algorithm的规范。

基于几个开源的代码片断,我创build了一个OoXmlCryptostream包装器来轻松访问Office 2007encryption文件。

这是基于OOXMLencryption/解密源代码的博客文章 。

JFYI:我们的SecureBlackbox产品提供了用于OOXML文档encryption和解密的组件 。