Как разархивировать защищенный паролем файл через Ruby

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

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


person digitalsanctum    schedule 26.05.2009    source источник
comment
Требования изменились, и мне больше не нужно распаковывать защищенный паролем файл, поэтому я использую RubyZip для распаковки. Спасибо за ответы.   -  person digitalsanctum    schedule 09.06.2009


Ответы (5)


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

Архив-zip

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

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

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

person kainlite    schedule 06.03.2013
comment
Ваш ответ был полезен для тех, кто ищет через Google ;) Может быть установлен через gem install archive-zip и работает без проблем. - person knut; 04.01.2014

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

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

person Larry K    schedule 26.05.2009

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

person John Feminella    schedule 26.05.2009
comment
RubyZip поддерживает распаковку, защищенную паролем: github.com/rubyzip/rubyzip/blob/ - person diman; 20.01.2021

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

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

DotNetZip бесплатен.

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

person Cheeso    schedule 27.05.2009

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

person Craig C.    schedule 25.02.2012