Чтение / запись документов Excel 2007, защищенных паролем - PullRequest
2 голосов
/ 01 октября 2009

Какой метод использует Office 2007 для шифрования (при выборе «Шифрование» и установке пароля из меню Office)?

Моему приложению C # необходимо создавать и читать зашифрованные файлы Excel 2007 (.xlsx). Важно, чтобы эти файлы оставались доступными из Excel, поэтому я должен использовать метод шифрования Microsoft, а не свой собственный.

Обычный файл Excel 2007 является сжатым ZIP-файлом, и я обращаюсь к нему с помощью ExcelPackage , который внутренне использует * System.Io.Packaging.Package * (часть .net 3.0).

Однако шифрование в Office не стандартное шифрование ZIP. Класс Package не поддерживает шифрование и сообщает о поврежденном файле. 7Zip открывает файл (без пароля) и показывает несколько двоичных файлов внутри.

Ответы [ 3 ]

3 голосов
/ 01 октября 2009

Office 2007 использует документ OLE (тот же формат контейнера, который используется для двоичных документов Office) для хранения зашифрованных документов.

[MS-OFFCRYPTO]: спецификация структуры криптографии офисных документов должна содержать спецификацию используемых структур данных и алгоритмов.

2 голосов
/ 01 октября 2009

На основе нескольких фрагментов с открытым исходным кодом я создал оболочку OoXmlCrypto stream для простого доступа к зашифрованным файлам Office 2007.

Это основано на блоге с исходным кодом , который выполняет шифрование / дешифрование OOXML.

1 голос
/ 25 июля 2010

JFYI: наш продукт SecureBlackbox предлагает компоненты для шифрования и расшифровки документов OOXML и многие другие функции.

...