Boîte à outils |
Contrôle de redondance cycliqueUn 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 CRC 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émentationL'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 CRC 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, un CRC est calculé 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
}
[modifier] Pour en savoir plus |