- PR -

cygwinで圧縮と暗号化を使いたい

1
投稿者投稿内容
まめわん
会議室デビュー日: 2008/01/18
投稿数: 3
投稿日時: 2008-01-18 04:14
書き込む場所を間違っているかも知れませんが、端末(windows上)で
コマンドラインから”圧縮”と”暗号化”したファイルを作って、
サーバ(UNIX)にFTPし、”復号”と”解凍”したいのですがうまくいきません。
サーバでエラー「uncompress 入力ファイルが壊れています」と
なってしまいます。

<端末のコマンド>
cat 入力ファイル | compress -f | ccrypt -u -K キー文字 > 出力ファイル1

<サーバのコマンド>
cat 出力ファイル1 | crypt キー文字 | uncompress -f > 出力ファイル2

端末で圧縮(compress)だけ、暗号化(ccrypt)だけしたファイルであれば、
サーバで解凍(uncompress)、復号(crypt)はできました。

cygwinを使うのがなれていないので、端末での圧縮(compress)、暗号化(ccrypt)
の方法が間違っているのでしょうか?

ご教授よろしくお願いいたします。
blunder
ベテラン
会議室デビュー日: 2003/09/11
投稿数: 65
投稿日時: 2008-01-18 12:26
cygwinは使ってないのでよく分かりませんが、たぶんcompress -f/uncompress -f
ではなく、compress -c/uncompress -cのような気がしますが....
まめわん
会議室デビュー日: 2008/01/18
投稿数: 3
投稿日時: 2008-01-19 09:58
blunderさん、ご回答いただきありがとうございました。

>compress -c/uncompress -cのような気がしますが....
ご指摘のパラメータでやってみましたが、同じエラーとなりました。

その後いろいろ試し、1回のコマンドでなく別々に処理することで
サーバで正常に復号、解凍ができました。
 <端末側>
 compress -f 対象ファイル
 #compressした対象ファイル.Z(拡張子付)を暗号化
 ccrypt -u -K キー文字 対象ファイル.Z(拡張子付) > 出力ファイル

 <サーバ側>
 投稿内容と同じ1回のコマンドでOKでした

※まだまだ勉強不足で恥ずかしい限りです。

あらためてまして、blunderさんありがとうごさいました。
blunder
ベテラン
会議室デビュー日: 2003/09/11
投稿数: 65
投稿日時: 2008-01-19 20:26
compress/uncompressはもともと標準入力から読んでいるので、"-c"をつける
意味なかったですね。私のほうこそうっかりしていて、失礼しました。

しかしなぜパイプを通す形だとだめなのかは疑問ですね。
例えば
cat 入力ファイル | compress >圧縮ファイル
cat 圧縮ファイル | ccrypt -u -K キー文字 >暗号ファイル
などとしたとき、どこかでおかしくなっていませんかね?

あとcompressでなく、gzipだとうまくいくとか?

ちょっと気になっただけです。もう解決ずみってことでしたら、気にしないで
ください。

では。
まめわん
会議室デビュー日: 2008/01/18
投稿数: 3
投稿日時: 2008-01-22 00:04
blunderさん、貴重なご意見ありがとうございました。

私も気になっていましたので調査してみました。

確認1)
※入力ファイルとして「約200KB」の用意しました。

確認1)−1
 コマンド:cat 入力ファイル | gzip > 圧縮ファイル(1)
 この場合、出力されたファイルが「約23KB」となりました。

確認1)−2
 コマンド:cat 入力ファイル | compress > 圧縮ファイル(2)
 この場合、出力されたファイルが「約43KB」となり、
 圧縮ファイル(1)の約倍になってしまいました。

上記圧縮ファイル(1)、(2)をサーバ側で「zcat」したところ
・圧縮ファイル(1)は、正常に表示されました。
・圧縮ファイル(2)は、「corrupt input」となり表示できませんでした。

原因までは分かりませんでしたが、
 ”cat”+”|(パイプ)”+”compress”
だと問題があるようです。

確認2)
compressのでなく、gzipで
 cat 入力ファイル | gzip | ccrypt -u -K キー文字 > 出力ファイルとして、
サーバ側で
 cat 出力ファイル | crypt キー文字 |
   uncompress -f > 出力ファイル(非圧縮、復号後)
と処理して正常に解凍、復号できました。

まだまだ調査不足ですが、以上ご報告でした。
1

スキルアップ/キャリアアップ(JOB@IT)