Как распаковать зашифрованный ODT OpenDocument в Java - PullRequest
4 голосов
/ 21 декабря 2010

У меня есть зашифрованный файл ODT (Open Document Text), и мне нужно его распаковать. ODT - это ZIP-файл. Зашифрованный ODT - это обычный файл ZIP, только некоторые файлы внутри ZIP зашифрованы.

Использование ZipFile работает нормально в тесте, но я не могу использовать ZipFile на самом деле, потому что у меня есть поток в памяти, я не хочу работать с файлом.

Поэтому я использую ZipInputStream . Но использование ZipInputStream.getNextEntry () создает ужасные только для записей DEFLATED может быть дескриптор EXT исключение.

Насколько я понимаю, он создает первый зашифрованный файл внутри ZIP-пакета, например, в файле content.xml. Поскольку OpenOffice зашифровал xml-файл, вероятно, было бессмысленно сжимать его, и он хранился в несжатом ZIP-пакете.

Но у ZipInputStream, похоже, с этим проблемы, и я не вижу пути решения проблемы.

И да, зашифрованный файл ODT был создан OpenOffice Writer 3.2.1. И да, стандартный ZipInputStream не может даже перечислять записи в нем.

Что-нибудь, что вы можете предложить?

Ответы [ 3 ]

1 голос
/ 29 декабря 2010

Вы можете посмотреть, если это возможно, с ODF Toolkit library

1 голос
/ 05 апреля 2012

Проблема не имеет ничего общего с шифрованием, но с тем фактом, что ZipInputStream не ожидает (и не знает, как обрабатывать) дескриптор EXT, когда связанные данные не были DEFLATED (т.е. были сохранены без сжатия, как есть),Это может быть недостатком («ошибкой») в ZipInputStream, но я недостаточно знаком со спецификациями zip, чтобы знать так или иначе.

Неэлегичный, даже прямо-таки уродливый обходной путь - сохранить поток ввременный файл, а затем обработайте его как ZipFile.

(я являюсь автором ODFind и документа «Расшифровка файлов ODF», упомянутого выше.)

0 голосов
/ 28 декабря 2010

Вы наткнулись на то, что Ringlord сделал в ODFind для чтения зашифрованных файлов ODF? В этом документе ODF (для просмотра в формате HTML здесь вежливость Google) утверждается, что просто нет способа полагаться исключительно на библиотеки Java для расшифровки документов OpenOffice.org , Однако автор объясняет, как можно расшифровать полезную нагрузку content.xml файла ODF, используя Манифест ODF , RFC 2989 , PBKDF2Engine in JBoss3 и некоторые оригинальные открытия автора.

С наилучшими пожеланиями.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Я не имею никакого отношения к Ringlord , несмотря на то, что каждая ссылка выше указывает на содержание Ringlord.

...