2つの同じM4Aファイルが異なるハッシュ結果を提供しました。なぜ?

2つの同じM4Aファイルが異なるハッシュ結果を提供しました。なぜ?

同じ曲(両方ともM4A形式)を含む2つのファイルは、ハッシュを計算するときに2つの異なる結果を出力します。

md5sum
f149e2d2a232a410fcf61627578c101a  new.m4a
ad26ed675342f0f45dcb5f9de9d586df  old.m4a

同じバイト数を含みます。

ls -l
-rw-rw-r-- 1 cdc cdc 2978666 Jun 26 19:49 new.m4a
-rwxrwxr-x 1 cdc cdc 2978666 Jun 26 19:49 old.m4a

これはexiftool作成日(作成日)のみ異なります。ペーストビンnew.m4aそしてペーストビンのためのold.m4a)。

私はAudacityのツールを使用して2つのファイルを比較しました(反転して混合して互いに類似性を排除しました)。結果は何も残っていなかったので沈黙です。つまり、2つのファイル間に差がないことを意味します。

コマンドはcmp以下を提供します。

cmp -l
     54 375  23
     55  51 305
     56  41 112
     58 375  23
     59  51 305
     60  45 116
    170 375  23
    171  51 305
    172  41 112
    174 375  23
    175  51 305
    176  41 112
    270 375  23
    271  51 305
    272  41 112
    274 375  23
    275  51 305
    276  41 112

cmp -b
new.m4a old.m4a differ: byte 54, line 1 is 375 M-}  23 ^S

ただ本物違いは、そのold.m4aファイルが2020年12月にダウンロードされたファイルで、new.m4a数時間前にダウンロードされたことです。

必要に応じてダウンロードできます。new.m4a ここそしてold.m4a ここ。最初は両方ともアーティストのBandcampページからダウンロードされました。

PS:私の人間の耳は、両方が同じだと言います。

ベストアンサー1

印刷されたメタデータはexiftoolファイルデータの一部です。つまり:

$ diff <(exiftool old.m4a) <(exiftool new.m4a)
2c2
< File Name                       : old.m4a
---
> File Name                       : new.m4a
18,19c18,19
< Create Date                     : 2020:12:31 18:13:30
< Modify Date                     : 2020:12:31 18:13:34
---
> Create Date                     : 2021:06:26 18:57:37
> Modify Date                     : 2021:06:26 18:57:41
32,33c32,33
< Track Create Date               : 2020:12:31 18:13:30
< Track Modify Date               : 2020:12:31 18:13:30
---
> Track Create Date               : 2021:06:26 18:57:37
> Track Modify Date               : 2021:06:26 18:57:37
40,41c40,41
< Media Create Date               : 2020:12:31 18:13:30
< Media Modify Date               : 2020:12:31 18:13:30
---
> Media Create Date               : 2021:06:26 18:57:37
> Media Modify Date               : 2021:06:26 18:57:37

(これは、保存されている肉データではなく、ディスクに保存された日付など、2つのファイルのファイル日付が同じになるようにした後です。存在する文書)

生成時のmd5の合計みんなデータが使用されます。バイトが違うのでチェックサムも違います。

つまり、オーディオデータそれは同じです。


これに加えて、cmp16進ダンプを実行して生の違いを確認することもできます。

たとえば(最初の50バイトをスキップ、最大300種類の16進数):

$ diff <(od -j 50 -N 300 -t x1 old.m4a) <(od -j 50 -N 300 -t x1 new.m4a)
1c1
< 0000062 00 00 dc 13 c5 4a dc 13 c5 4e 00 00 ac 44 00 71
---
> 0000062 00 00 dc fd 29 21 dc fd 29 25 00 00 ac 44 00 71
8c8
< 0000242 68 64 00 00 00 07 dc 13 c5 4a dc 13 c5 4a 00 00
---
> 0000242 68 64 00 00 00 07 dc fd 29 21 dc fd 29 21 00 00
14,15c14,15
< 0000402 00 20 6d 64 68 64 00 00 00 00 dc 13 c5 4a dc 13
< 0000422 c5 4a 00 00 ac 44 00 71 bc 00 55 c4 00 00 00 00
---
> 0000402 00 20 6d 64 68 64 00 00 00 00 dc fd 29 21 dc fd
> 0000422 29 21 00 00 ac 44 00 71 bc 00 55 c4 00 00 00 00

たとえば、

OLD: 00 00 dc 13 c5 4a  dc 13 c5 4e 00 00 ac 44 00 71
          |___________||___________|
---
NEW: 00 00 dc fd 29 21  dc fd 29 25 00 00 ac 44 00 71
          |___________||___________|

次に、次のように日付に変換します。

m4aはApple Mac OS X HFS +タイムスタンプ(1904年1月1日深夜GMT以降の秒数)を使用します。

old:
dc 13 c5 4a => 3692283210 => Thursday, December 31, 2020 18:13:30
dc 13 c5 4e => 3692283214 => Thursday, December 31, 2020 18:13:34

new:
dc fd 29 21 => 3707578657 => Saturday, June 26, 2021 18:57:37
dc fd 29 25 => 3707578661 => Saturday, June 26, 2021 18:57:41

おすすめ記事