2009-05-26 4 views
3

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

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

+0

Требования изменены, и мне больше не нужно разархивировать защищенный паролем файл, поэтому я использую Ruby Zip, чтобы сделать распаковку. Спасибо за ответы. – digitalsanctum

ответ

1

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

2

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

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

0

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

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

DotNetZip является бесплатным.

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

0

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

3

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

Archive-zip

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

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

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

+1

Ваш ответ был полезен для кого-то, ищущего через google;) Может быть установлен через 'gem install archive-zip' и работал без проблем. – knut

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

  • Нет связанных вопросов^_^