두 개의 동일한 M4A 파일이 서로 다른 해시 결과를 제공했습니다. 왜?

두 개의 동일한 M4A 파일이 서로 다른 해시 결과를 제공했습니다. 왜?

동일한 노래(둘 다 M4A 형식)가 포함된 두 파일은 해시를 계산할 때 두 가지 다른 결과를 출력합니다.

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의 도구를 사용하여 두 파일을 비교했습니다(뒤집고 혼합하여 서로 유사성을 제거함). 결과는 아무것도 남지 않았기 때문에 침묵입니다. 즉, 두 파일 사이에 차이가 없음을 의미합니다.

명령은 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 페이지에서 다운로드되었습니다.

추신: 내 인간의 귀는 그 둘이 동일하다고 말합니다.

답변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

(이것은 저장되는 고기 데이터가 아닌 디스크에 저장된 날짜와 같이 두 파일의 파일 날짜가 동일하도록 만든 후입니다.존재하다문서)

생성 시 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

관련 정보