Domanda

E 'possibile determinare il byte, o byte, che hanno cambiato da un calcolo CRC16?

Per esempio, dico ottengo un file di configurazione che è di 780 byte che include il CRC16 come valore di due byte alla fine (in modo che il CRC16 viene calcolato sulla base dei primi 778 byte). Quando ho calcolare il CRC16 per il contenuto del file (i 778 byte che non includono il CRC16 alla fine) ed è diverso, è possibile determinare il byte compensato si è verificato l'errore in?

È stato utile?

Soluzione

La risposta breve è no, non si può.

Per capire perché bisogna capire come il CRC viene calcolato e che matematicamente che si chiama un'operazione di hashing. Che cosa significa è la l'uscita non può essere ricostruito in modo affidabile dal codice hash generato (in questo caso il CRC).

Ci sono metodi di analisi statistica che possono consentire di dedurre alcune informazioni sul testo originale sulla base di casi di test di ingresso certa specifici, ma nella maggior parte dei casi, e ad un osservatore ingenuo non c'è la mappatura di nuovo diretto al testo originale dal CRC. Quindi, a meno che il testo originale è stato costruito in un certo modo non c'è modo di sapere l'offset con cui i dati è stato cambiato in molti casi.

Altri suggerimenti

Usando solo i due calcoli del CRC16, no.

CRC16 è solo una somma di controllo:. Si può dire che c'è una differenza, ma non dove

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top