Le CRC32 (32 bits) c'est quoi ?
Par : A. YEZZA
Introduction
Définition : Le CRC32 (Cyclic Redundancy Checksum
en anglais, Contrôle de Redondance Cyclique en français), est un
nombre calculé sur la base de 32 bits (d'où vient le suffixe32) et qui représente une signature (unique)
de données quelconques.
En fait, le CRC32 est un nombre composé de 8 parties, chaque partie tient sur 4
bits et elle est formée d’un nombre hexadécimal (représentation numérique en base 16)
à un chiffre (variant de 0 à F en hexadécimal, i.e., peut prendre les valeurs :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ou F) comme illustré dans la figure ci-dessous :
Donc, le plus petit CRC32 vaut : 00000000 et le plus grand vaut : FFFFFFFF = 4
294 967 295 en représentation décimale. Désormais, le mot CRC fait référence au CRC32,
c'est-à-dire le CRC basé sur 32 bits.
Autrement dit, en termes mathématiques, le CRC est une fonction associant à
chaque donnée un nombre hexadécimal unique dans le sens que deux données différentes ont
toujours des CRC différents. Ceci dit, cette confirmation reste valable dans le
domaine de la théorie, car la réalité c’est que la probabilité de trouver deux
données différentes ayant le même CRC (signature) est tellement petite que le
CRC peut être considéré comme étant une signature unique. En fait, deux données
qui diffèrent d’un seul bit ont certainement des CRC complètement différents.
Les données traitées peuvent provenir directement de la mémoire de l’ordinateur
(bits), d'un flux réseau ou d’un fichier; dans ce dernier cas, on parle plutôt du CRC d’un
fichier. Autrement dit, le CRC du fichier est la même chose que le CRC de sont
contenu.
Exemple : La chaine de caractères "Bonjour le monde !"
possède le CRC32 : 5085D1FE. Si vous créez un fichier texte par
exemple : MonFichier.txt en utilisant le notepad sous Windows,
vous collez cette chaine de caractères telle quelle sans plus, alors le fichier
aura le même CRC32. Rappelez-vous que le calcul du CRC se fait sur des nombres binaires,
donc en se basant sur la figure précédente, ce nombre 5085D1FE
est représenté comme suit :
Sans rentrer dans les détails techniques et mathématiques, le calcul du CRC s'effectue sur des
nombres binaires (en base 2), c'est-à-dire des 0 et des 1. Il utilise un polynôme
fixe et l'opérateur XOR appliqué à des données binaires.
Le nombre d’algorithmes utilisés pour calculer le CRC est illimité ! Par
contre, peu importe l’algorithme, le nombre de possibilités des valeurs du CRC
est limité à : 232 = 4 294 967 296 (plus de 4 milliards de possibilités). Par
ailleurs, pour être conforme à l’existant et aux standards du marché, les fabricants de logiciels ont opté
dans leurs développements
faisant appel à la notion du CRC pour l’utilisation du même algorithme déjà
utilisé par les produits les plus connus comme Info-zip, WinZip, WinRar, WinAce pour ne
pas en mentionner que quelques uns. Si vous êtes intéressé par les détails techniques
du CRC, voici une liste de quelques liens où vous pouvez trouver des informations
plus détaillées sur le sujet :
Imaginez que vous disposiez de deux fichiers ayant la même taille sur des
supports différents ou identiques et que vous vouliez savoir s’ils sont
vraiment identiques. La façon la plus sûre est de les comparer bit à bit, ce
qui risque de prendre un temps extrêmement long si le fichier possède une taille
importante, et particulièrement si les fichiers sont dans les faits identiques
! Calculer les CRC des deux fichiers et les comparer est beaucoup plus rapide
et nous permet de conclure à presque 100% qu’ils sont identiques s’ils ont le
même CRC et à 100% qu’ils sont différents s’ils ont des CRC différents. Une
autre utilisation du CRC consiste à vérifier l’intégrité d’un fichier (d’une
donnée). Il suffit dans ce cas de calculer au préalable le CRC du fichier (de
la donnée), le mettre en référence (le stocker) et pour vérifier son intégrité
à n’importe quel moment, il suffit de recalculer son CRC et de le comparer avec
le CRC référencé. Si ces derniers sont identiques, on peut confirmer
l’intégrité du fichier (la donnée). Dans le cas contraire, l’intégrité n’est
plus conservée, autrement dit, le fichier (la donnée) a été modifié (modifiée)
depuis la dernière fois où son CRC a été référencé. Ce dernier mécanisme est
déjà utilisé par plusieurs fabricants de logiciels où l'intégrité des données est un élément
important. Par contre, il ne faut pas confondre intégrité et sécurité. Notez que le CRC32 ne peut être utilisé en aucun
cas comme fonction de hachage pour stocker des alias/signatures de données
sensibles comme un mot de passe, un ticket etc. Des algorithmes de hachage plus
avancés comme MD2, MD4, MD5, SHA-1, SHA-2 etc., peuvent être utilisés dans les
situations où la sécurité est de rigueur.