L'aggiunta di tag Yosemite a un file cambia la sua firma MD5?

-1

Ho un sistema di backup cloud che si basa sulle firme hash MD5 per la deduplicazione.

L'aggiunta di tag OSX a un file modifica l'hash MD5?

EDIT: ho eseguito alcuni test e ottenuto risultati misti a seconda del tipo di file / app utilizzato. Quindi non sono sicuro se il tag stesso stia facendo la differenza o qualcos'altro cambi dall'app.

    
posta Alex Cuervo 30.12.2014 - 20:23
fonte

2 risposte

2

Ho eseguito md5 file in Terminal.app, applicato un tag a file e ripetuto md5 . L'hash restituito era lo stesso. Senza conoscere la tua esatta configurazione è impossibile saperlo con certezza, ma sembra che tu stia bene.

    
risposta data 30.12.2014 - 20:28
fonte
2

Una cosa che ho pensato potrebbe influire sul risultato sono i tag quali che stai aggiungendo e come. I colori delle etichette tradizionali (rosso, arancione, ...) sono memorizzati in un sottocampo a 3 bit del campo FinderInfo del record del catalogo HFS + per il file. Le nuove etichette vengono invece memorizzate in un attributo esteso del file.

Sotto il nuovo schema, se Finder imposta il tag, lo inserisce sempre (o loro) nell'attributo esteso di com.apple.metadata:_kMDItemUserTags . Se alcune altre applicazioni impostano l'indice delle etichette, ad esempio con il comando AppleScript

tell application "Finder" to set label index of someFile to 3

l'indice delle etichette è impostato in FinderInfo. Un valore diverso da zero per FinderInfo causa il comando xattr per elencarlo come se fosse l'attributo esteso com.apple.FinderInfo , dove puoi vedere l'indice dell'etichetta come tre dei bit nel decimo byte . L'interazione tra questi due campi è complessa. A volte modificando uno si cancellerà l'altro, a volte no.

md5 potrebbe essere influenzato in modo diverso a seconda di quali metadati, se esistono, sono inclusi nel checksum rispetto a quali metadati sono influenzati dal metodo che utilizzi per impostare l'etichetta.

La buona notizia è che md5 sembra ignorare tutti i metadati. Calcola un checksum solo del fork dei dati. Non include nemmeno il fork delle risorse. (Per il checksum del fork delle risorse, devi esplicitamente richiederlo, come in md5 "Icon^M"/..namedfork/rsrc , ma il fork delle risorse è la cosa solo che guarda.)

    
risposta data 30.12.2014 - 22:56
fonte

Leggi altre domande sui tag