C# – Read/write Excel 2007 password-protected documents

cencryptionexcelms-officepassword-protection

What method does Office 2007 use for encryption (when choosing Encrypt and setting a password from Office menu)?

My C# app needs to create and read encrypted Excel 2007 files (.xlsx). It is important that these files remain accessible from Excel, so I must use Microsoft's encryption method, can't brew my own.

Normal Excel 2007 file is a ZIP-compressed file, and I'm accessing it using ExcelPackage, which internally uses * System.Io.Packaging.Package* (part of .net 3.0).

However, the encryption in Office is not the standard ZIP encryption. The Package class seems not to support encryption, and reports a corrupted file. 7Zip opens the file (with no password provided) and shows a few binary files inside.

Best Answer

Office 2007 uses an OLE document (the same container format that is used for the binary Office documents) to store encrypted documents.

[MS-OFFCRYPTO]: Office Document Cryptography Structure Specification should contain the specification of the used data structures and algorithms.

Related Topic