L'MD5 di un file (così come gli altri algoritmi che hai citato) non è un "allegato" al file, ma è il risultato di una funzione di hash applicata al contenuto del file. Per cui, in primo luogo non è possibile modificare l'hash di un file senza modificarne il contenuto (è come chiedere di modificare la lunghezza di un file senza modificarne il contenuto - è una domanda senza senso).

Anche ammettendo di poter modificare il contenuto del secondo file in maniera tale da non modificarne il significato effettivo per un programma (ad esempio, inserendo dei commenti XML), non è comunque semplice modificare l'hash a piacimento - anzi, gli hash crittografici (come MD5 e SHA-1) sono progettati in maniera tale per cui generare volontariamente "collisioni" (file differenti con il medesimo hash) sia difficile al punto da essere impossibile, visto che lo scopo stesso di un hash è garantire l'integrità del file originale (quanto al CRC, è un altro discorso, dato che non è un hash crittografico non ha le stesse caratteristiche di resistenza alle collisioni).

Ora, per MD5 sono state scoperte delle vulnerabilità nell'algoritmo per cui generare hash duplicati, ma, come credo avrai già visto, mi pare sia necessario poter modificare entrambi i file per generare una collisione.

Ergo, quello che chiedi è sostanzialmente impossibile (=richiede approcci brute-force computazionalmente proibitivi) proprio perché le funzioni di hash sono state progettate in maniera tale da impedire quello che vuoi fare.

Ed è proprio per questo che chiudo la discussione: sotto una domanda di questo genere con ogni probabilità c'è una finalità poco trasparente - se gli autori del software/... controllano l'hash del file XML che stai cercando di modificare vuol dire che non è previsto che tu possa modificare il file in questione.
Inoltre, la domanda è sostanzialmente off-topic in questo forum - qui si parla di programmazione, non di ricerca tool di hacking conto terzi.