2009-10-01 4 views
2

Какой метод использует Office 2007 для шифрования (при выборе Шифрование и установка пароля из меню Office)?Чтение/запись документов, защищенных паролем Excel 2007

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

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

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

ответ

2

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

Основано на blog post с source code, которое делает шифрование/дешифрование OOXML.

+0

Вы использовали его с тех пор? Это не так хорошо документировано, поэтому я не могу понять, когда и как его использовать? – HeinrichStack

3

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

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

+1

Спасибо. Это довольно длинная спецификация. Я все еще надеюсь на черный ящик :) – dbkk

+0

Ну, один черный ящик, который вы можете использовать, будет автоматизировать Office. Но я не знаю о какой-либо библиотеке третьей части, которая может обрабатывать шифрование. –

Смежные вопросы