- - PR -
パスワード付きZipファイルを解凍する方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-26 14:26
VB.NETでWindowsアプリケーションを開発しています。
パスワード付きZipファイルの解凍を、J#で提供されているライブラリ「vjslib.dll」を 参照し行なう処理を作成しています。 パスワード無しは出来たのですが、パスワード付きZipファイルを解凍が出来ません。 そもそもこのライブラリ「vjslib.dll」はパスワード付きZipをサポートしてないので しょうか? どなたか解決策をご存知の方がいましたらご教授下さい。 宜しくお願い致します。 以上 | ||||
|
投稿日時: 2003-11-26 17:31
想馬です。
>パスワード無しは出来たのですが、パスワード付きZipファイルを解凍が出来ません。 zipファイルにかかっているパスワードを自動的に解除し、解凍したいのですか? | ||||
|
投稿日時: 2003-11-26 17:50
>>パスワード無しは出来たのですが、パスワード付きZipファイルを解凍が出来ません。
>zipファイルにかかっているパスワードを自動的に解除し、解凍したいのですか? はい。zipに入っているのは画像ファイルなのですが、プログラム上でzipファイルに かかっているパスワードを解除し、圧縮されている画像をフォームに表示したいのです。 | ||||
|
投稿日時: 2003-11-26 18:12
私はVB .NETもJ#もわかりませんが・・・ 普通に考えて、ライブラリ「vjslib.dll」がパスワード付きzipファイルの解凍をサポートしていたとしても、 それは「パスワードを知っている事」が前提だと思うのですが。 セキュリティの点からみても、パスワードを知らないのに自動解除をサポートすることはありえないと思いますよ。 | ||||
|
投稿日時: 2003-11-26 18:23
こんにちわ。諸農です。
アプリケーションはパスワードを知っているという前提ですか? #都度入力でも、固定のパスワードでも。 たとえばvjslib.dllの解凍できるクラスが持っているメソッドですが、 パスワードを指定するようなところはないですか? #何というクラスか教えていただけるとありがたいです。 #.jarファイルを解凍するクラスかしら? あとは、UnZip.DLLが使える(今回のソリューションの中でOKであるなら) のでしたら、System.Runtime.InteropServicesを使って、 DLL関数を直接操作してみてはいかがでしょうか。 http://www.madobe.net/archiver/index.html こちらの統合アーカイバサイトからUnZipのSDKを 入手することができますので、試してみてはいかがでしょう? #パスワードはやったこと無いですが、通常の使い方では経験があります。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2003-11-26 18:43
想馬です。
>tomさんへ 悪い方に決め付けたような文章になってしまい申し訳ありません。 以後、気をつけます。 | ||||
|
投稿日時: 2003-11-26 19:12
こんなの見つけました。 | ||||
|
投稿日時: 2003-11-26 19:44
想馬さん、Jubeiさん、ご指摘の通り説明不足でした。すいません。
>>普通に考えて、ライブラリ「vjslib.dll」がパスワード付きzipファイル >>の解凍をサポートしていたとしても、 それは「パスワードを知っている事」 >>が前提だと思うのですが。 セキュリティの点からみても、パスワードを知 >>らないのに自動解除をサポートすることはありえないと思いますよ。 >>アプリケーションはパスワードを知っているという前提ですか? >悪い方に決め付けたような文章になってしまい申し訳ありません。 いえいえ。私もセキュリティに対しては勉強不足なので、指摘して頂けると助かりますし、 何よりも勉強になるので、これからもよろしくお願いします。 アプリケーションはパスワードを知っているというのが前提です。 パスワードはZipファイル毎に違い、テーブルに暗号化された形で格納されています。 >>たとえばvjslib.dllの解凍できるクラスが持っているメソッドですが、 >>パスワードを指定するようなところはないですか? 現在以下のような形で作成しています。 パスワードを指定するような箇所を調べているのですが、見つからないので困っています。 zis = New java.util.zip.ZipInputStream(New java.io.FileInputStream(zipPath)) zis.getNextEntry() ' バイト配列を確保 ReDim buf(size) bis = New java.io.BufferedInputStream(zis) ' 展開ファイル読込む realSize = bis.read(buf, 0, size) ' 解凍ファイルをzipファイルと同じディレクトリに書込む keyName = zipPath.Substring(0, zipPath.LastIndexOf("\") + 1) & keyName fos = New java.io.FileOutputStream(keyName) fos.write(buf, 0, realSize) zis.closeEntry() >>あとは、UnZip.DLLが使える(今回のソリューションの中でOKであるなら) >>のでしたら、System.Runtime.InteropServicesを使って、 >>DLL関数を直接操作してみてはいかがでしょうか。 初めUnZip.dllを使用し解凍処理を作成していたのですが、ライセンスが必要 との事を指摘され(以下URL)違う方法をと調べて、たどり着いたのがこの方法でした。 無念です。いやもう少し諦めずに調べてみます。 想馬さん、Jubeiさん、きくちゃんさん、ありがとうございました。 また何かよい方法がありましたらご教授下さい。宜しくお願い致します。 <UNZIP>http://www.csdinc.co.jp/archiver/lib/unzip32.html 以上 |