3

私はpdftkを使用しており、いくつかのテストを行っており、複数ページのPDFファイルを個別の単一ページのPDFファイルにバーストし、それらの単一ページのPDFごとにmd5ハッシュチェックサム(デジタル指紋)を生成すると、毎回異なるハッシュになりますバーストを行います。これは、変更のないまったく同じファイルであっても結果です。

私のテストプロセスは次のとおりです。

  1. test.pdf (10 ページを含む単純なテキストのみの PDF) を解凍します。
  2. pdftk を使用して、test.pdf を 10 個の個別の PDF ファイル (ファイルごとに 1 ページ) にバースト (分割) します。
  3. 10 個の単一ページ PDF ファイルごとに md5 ハッシュ チェックサムを生成する
  4. 10 個のハッシュ チェックサムを記録する
  5. 手順 1 ~ 4 を繰り返します
  6. すべてのハッシュが異なることに注意してください

補足:解凍後にPDFでチェックサムを生成すると、繰り返してもまったく同じチェックサムが得られます。

この演習では、 node.jsとその暗号モジュールを使用しています。

私の質問は、繰り返しによってチェックサムが異なるのはなぜですか? 結果として得られる 10 個の単一ページ ファイルは、最後に作成されたときとまったく同じであると思います。親ドキュメント (および個々のページ自体) はまったく変更されていません。

4

2 に答える 2

2

glibの答えは、データが異なるためチェックサムです。

私がこれを確認した実験:

まず、pdf をバーストしてファイルを移動します。

$pdftk Michael-Jordan-I-Cant-Accept-Not-Trying.pdf burst
$md5sum pg_0001.pdf 
150ef33eec73cd13c957194ebead0e93  pg_0001.pdf
$mv pg_0001.pdf 150ef33eec73cd13c957194ebead0e93

次に、同じ pdf を再度バーストし、ファイルを移動します。

$pdftk Michael-Jordan-I-Cant-Accept-Not-Trying.pdf burst
$md5sum pg_0001.pdf
49c7c885bc516856f4316452029e0626  pg_0001.pdf
$mv pg_0001.pdf 49c7c885bc516856f4316452029e0626

これにより、あなたの発見が確認されました。金額が異なります。調べると、異なるのはバイト 91411 ~ 92163 です。

私の直感では、これは日付のメタデータであることがわかったので、次のように確認しました。

$pdftk 150ef33eec73cd13c957194ebead0e93 dump_data output 150.txt
$pdftk 49c7c885bc516856f4316452029e0626 dump_data output 49c.txt
$diff -u 150.txt 49c.txt 
--- 150.txt 2012-07-10 11:08:02.371119999 -0600
+++ 49c.txt 2012-07-10 11:08:18.891201910 -0600
@@ -3,9 +3,9 @@
 InfoKey: Producer
 InfoValue: itext-paulo-155 (itextpdf.sf.net-lowagie.com)
 InfoKey: ModDate
-InfoValue: D:20120710105934-06'00'
+InfoValue: D:20120710110010-06'00'
 InfoKey: CreationDate
-InfoValue: D:20120710105934-06'00'
-PdfID0: 51671a1a6c4f5e6bb81b88fc7efd14d0
-PdfID1: 82fd646061863972216ccf8a32cf3c7b
+InfoValue: D:20120710110010-06'00'
+PdfID0: 844f34f87275b9184ebe10b82d3397c9
+PdfID1: 8f555a30216e37d77abaf03a4217b2a
 NumberOfPages: 1

あなたの問題が何であるかはわかりませんが、一致する合計が本当に必要な場合は、次の 2 つの明白なアプローチがあります。

  1. 日付が同じになるように設定します。
  2. 最初の N バイトのみを使用して合計を計算します。問題のあるメタデータを省略します。
于 2012-07-10T17:15:05.967 に答える