2016-11-10 19 views
0

私は大きなファイルを圧縮する必要がありますが、元のファイルが圧縮されたものと同じハッシュ値を持つようにする必要があります。小さなファイルで試してみましたが、ハッシュ値は異なりますが、メタデータの変更が原因である可能性があります。圧縮後にファイルが変更されないようにするにはどうすればよいですか?圧縮によってハッシュ値が変更されますか?

+0

まず、元の圧縮されていないファイルをハッシュし、圧縮したファイルをハッシュしてからyesにすると、異なるハッシュ値になります。一方、元の圧縮されていないファイルをハッシュし、その圧縮の背後にあるコンテンツをハッシュした場合(つまり、解凍してハッシュした場合)、別のハッシュは圧縮や解凍の壊れた状態を示します。 –

答えて

0

使用しているシャーシによって異なります。 crc32を使用している場合、ハッシュを同じにするのはかなり簡単です。 MD5は既に可能かもしれません(私はそこでのアートの始まりを知らない)、SHA1はおそらく数年で実行可能になるでしょう。あなたがSHA256を使用している場合は、あきらめてください。

あなたのハッシュアルゴリズムが特にあなたの圧縮設定を知らないか、または入力ファイルがハッシュ衝突を引き起こすように非常に慎重に作られていない限り、ハッシュは圧縮前と後で変わります。つまり、標準の暗号化ハッシュは圧縮時に変更されます。

すべてのハッシュアルゴリズムは、意味のないビットストリームです。圧縮方式についてはわかりません。

+0

ハッシュ値が前と後のハッシュ値を比較しようとしましたが、これは多分ファイルのメタデータが異なっている(ジップの名前と作成日が異なるため)かどうか疑問に思っていました。 – michal111

+0

あなたはどのプラットフォームにいますか?あなたがLinux/Mac/Unixの設定をしているなら、説明するのが一番簡単です: – Matthias

+0

'$ cat myFile | md5sum'と '$ cat myFile | compressionProgram | md5sum' md5sumプログラムはメタデータやファイル名を全く見ません。 – Matthias

0

ハッシュがCRC-32の場合、圧縮データに4バイトを挿入または追加し、元のCRCを取得するように設定できます。たとえば、gzipストリームでは、ヘッダーに4バイトの余分なブロックを挿入できます。

MD5のような暗号化ハッシュの全体的な点は、質問のタグとして言われているが、これを非常に困難にすること、または実際には不可能にすることです。

関連する問題