Как распаковать защищенный паролем файл через Ruby - PullRequest
3 голосов
/ 26 мая 2009

Я бы хотел разархивировать зашифрованный / защищенный паролем файл с помощью сценария Ruby, не переключаясь на системный вызов. В настоящее время я использую библиотеку rubyzip для распаковки файлов, но не вижу опции для работы с зашифрованными файлами.

Кто-нибудь знает какой-нибудь код или библиотеку, которая сделает это?

Ответы [ 5 ]

4 голосов
/ 06 марта 2013

Да, кстати, есть один, который отлично работает, я только что попробовал и нашел ваш пост в середине ..

Архив-молния

Пример использования:

require 'archive/zip'
Archive::Zip.extract('example5.zip', 'a_destination', :password => 'seakrit')

Я уверен, что это будет полезно для тех, кто ищет то же самое в Google:)

2 голосов
/ 26 мая 2009

Иногда правильный ответ - использовать системный вызов. Вот почему он там.

Правда, это медленнее и менее элегантно, чем использование библиотеки или метода. Но это дешевле, чем платить кому-то налог (роялти) и намного быстрее, чем писать новую библиотеку самостоятельно.

1 голос
/ 26 мая 2009

На данный момент я слышал только о библиотеке Chilkat Ruby Zip , которая не бесплатна. Библиотека RubyZip не поддерживает файлы, защищенные паролем, потому что базовая библиотека, zlib, тоже этого не делает.

0 голосов
/ 26 февраля 2012

Всегда есть возможность использовать JRuby + библиотеку Java для работы с zip-файлами. http://www.lingala.net/zip4j обрабатывает (зашифрованные) zip-файлы и лицензируется Apache. Я еще не использовал его, но он должен работать.

0 голосов
/ 27 мая 2009

Не рубиновая библиотека, но ... возможно, бесплатный вариант.

Если ваше приложение работает в Windows, вы можете использовать библиотеку DotNetZip через новый интерфейс COM. Он выполняет файлы, защищенные паролем, либо Zip-шифрование (слабое), либо WinZip-совместимое AES-шифрование.

DotNetZip бесплатен.

Если о Windows не может быть и речи, возможна другая возможность. DotNetZip работает и в Mono. Я не знаю, существуют ли механизмы интеграции Ruby-to-Mono, позволяющие вам звонить из Ruby в Mono на других платформах, но если они существуют, они также могут позволить вам вызывать DotNetZip.

...