1

beefishを使用してPythonのテキストファイルから暗号化されたファイルを作成しました。beefishはpycryptoを使用しています。

したがって、私のソーステキストファイルは33742バイトで、暗号化されたバージョンは33752です。これまでのところ問題ありませんが...

test.enc(暗号化されたテストファイル)をtar -czvfで圧縮すると、最終的なファイルは33989バイトになります。ソースファイルが暗号化されているときに圧縮が機能しないのはなぜですか?

これまでのところ、唯一のオプションは、最初にそれを圧縮し、次にそれを暗号化することで、ファイルはそのように小さいままであるようです。

4

2 に答える 2

7

圧縮は、データ内のパターンを識別することによって機能します。暗号化されたデータのパターンを識別できないため (これが要点です)、圧縮することはできません。

33,742 バイトの出力を生成する完全な暗号化アルゴリズムの場合、理想的には、復号化された元のデータについて判断できるのは、それが 33,742 バイトに収まるということだけです。たとえば 31,400 バイトに圧縮できれば、入力データがたとえば 32,000 バイトのランダム データではないことがすぐにわかります。これは、ランダム データにはパターンがなく、圧縮できないためです。これは、暗号化スキームの一部に障害があることを示しています。復号化されたデータがランダムかどうかは誰の仕事でもありません。

于 2012-11-24T18:12:11.417 に答える
1

tar -z で使用される圧縮方法は、入力ファイル内の繰り返しパターンに依存し、これらのパターンを、パターンが繰り返された回数のカウントで置き換えます (非常に単純化されています)。

ただし、ファイルを暗号化するときは、基本的に、繰り返しパターンをできるだけ「ランダム」に見えるノイズに隠そうとします。これにより、ファイルはほとんど圧縮できなくなります。それをアーカイブおよび圧縮ファイル形式 (メタデータなど) のオーバーヘッドと組み合わせると、ファイルは実際には少し大きくなります。

プロセスを逆にする必要があります。最初に圧縮してから暗号化すると、ペイロードが大幅に小さくなる可能性が高くなります。

于 2012-11-24T18:13:25.877 に答える