Contrôle de redondance cyclique
Un article de Wikipédia, l'encyclopédie libre.
Un contrôle de redondance cyclique ou CRC (Cyclic Redundancy Check) est un outil permettant de détecter les erreurs de transmission par ajout de redondance. La redondance ajoutée communément appelée (à tort) somme de contrôle (checksum) est obtenue par un type de hachage sur l'ensemble des données.
Les CRCs sont calculés avant et après la transmission ou duplication, puis comparés pour s'assurer que ce sont les mêmes. Les calculs de CRC les plus utilisés sont construits de manière à ce que les erreurs de certains types, comme celles dues aux interférences dans les transmissions, soient toujours détectées.
[modifier] Implémentation
L'opération mathématique essentielle dans le calcul d'un CRC est une division modulo 2 et le reste de cette division représente le CRC. Les CRCs sont souvent désignés sous le nom de checksums (sommes de contrôle), mais une telle désignation n'est pas correcte car, d'un point de vue technique, une somme de contrôle est calculée avec des divisions et non des additions. La partie principale de l'algorithme est la suivante :
function crc(bit array bitString[1..len], int polynomial) { shiftRegister := initial value // commonly all 0 bits or all 1 bits for i from 1 to len { if most significant bit of shiftRegister xor bitString[i] = 1 { shiftRegister := (shiftRegister left shift 1) xor polynomial } else { shiftRegister := (shiftRegister left shift 1) } } return shiftRegister }