Aussi disponible en : English · Español · Português · العربية
Calculateur CRC
Calculez un CRC avec n'importe lequel des 113 algorithmes du catalogue de référence, et découvrez ce que votre format entend réellement par CRC-32.
Qu'est-ce qu'un CRC ?
Un contrôle de redondance cyclique est un nombre court calculé à partir d'un bloc de données pour que le destinataire puisse savoir s'il est arrivé intact. Ce n'est ni un hachage ni une signature : il est conçu pour attraper les accidents que produisent la transmission et le stockage — bits inversés, octets perdus, trame tronquée — et il est assez peu coûteux pour qu'Ethernet, zip, PNG, gzip et quantité de bus matériels en calculent un sur tout ce qui passe.
L'essentiel est de comprendre qu'un CRC n'est pas un algorithme. C'est une famille décrite par six paramètres : la largeur du registre, le polynôme, la valeur de départ du registre, la réflexion ou non des bits d'entrée, celle des bits de sortie, et une valeur appliquée par XOR à la fin. Changez-en un et vous obtenez un CRC différent et tout aussi valide. Le catalogue de référence en recense 113 réellement employés, de trois bits de large à quatre-vingt-deux.
Ce calculateur implémente l'algorithme paramétré et embarque les 113, de sorte que vous pouvez calculer celui que votre format spécifie vraiment plutôt que celui qu'une bibliothèque a décidé d'appeler CRC-32.
Comment l'utiliser
- Fournissez votre entrée. Du texte par défaut, ou passez en octets hexadécimaux si vous partez d'une capture de paquets. La valeur par défaut est la chaîne 123456789, le vecteur de test du catalogue lui-même : le premier résultat affiché est donc consultable dans la table publiée.
- Choisissez l'algorithme. Cherchez par nom, par alias ou par polynôme. Taper CRC-32 mène à ISO-HDLC, ce que ce nom seul désigne, et taper un polynôme fait remonter tout ce qui l'utilise.
- Regardez le panneau de comparaison. Lorsque l'algorithme choisi partage son polynôme avec d'autres, ils sont tous listés avec ce que chacun renvoie pour votre entrée. C'est en général le moyen le plus rapide de découvrir lequel le système que vous déboguez emploie réellement.
Cinq algorithmes différents s'appellent CRC-32
Douze des algorithmes catalogués font trente-deux bits, et cinq d'entre eux partagent le polynôme 0x04C11DB7 : ISO-HDLC, BZIP2, CKSUM, JAMCRC et MPEG-2. Ils ne diffèrent que par le registre initial, les indicateurs de réflexion et le XOR final — et ils renvoient cinq nombres différents pour la même entrée. Sur la chaîne 123456789 ils donnent respectivement 0xCBF43926, 0xFC891918, 0x765E7680, 0x340BC6D9 et 0x0376E6E7.
Le catalogue enregistre le nom seul CRC-32 comme alias d'ISO-HDLC uniquement, celui qu'emploient zip, gzip et PNG. Mais une spécification, une fiche technique ou un ticket de support indiquant CRC-32 peut désigner n'importe lequel des cinq, et rien dans la valeur obtenue n'indique lequel l'a produite. Si deux systèmes divergent sur une somme de ce qui ressemble à une constante, c'est la première piste à écarter : c'est bien plus fréquent qu'une véritable erreur de transmission.
Le même piège existe un cran plus bas, et il y est pire. Le catalogue recense trente et un algorithmes de seize bits, et onze d'entre eux partagent le polynôme 0x1021 — dont XMODEM, KERMIT, IBM-3740 et IBM-SDLC. Sept autres partagent 0x8005, parmi lesquels ARC, MODBUS et USB. Un CRC de seize bits identifié par son seul polynôme est donc ambigu de onze façons, et c'est pourquoi la seule manière fiable d'en nommer un est de donner les six paramètres. C'est précisément la raison d'être du catalogue.
Comment cela est vérifié, et ce que signifie la colonne de classe
Le catalogue publie une valeur de contrôle pour chaque algorithme : le résultat obtenu sur la chaîne 123456789. Les données de référence constituent ainsi leur propre suite de tests. Ce moteur est vérifié en reproduisant les 113 valeurs publiées, et non en s'accordant avec une autre bibliothèque — s'accorder avec l'implémentation d'un tiers prouverait seulement que deux personnes ont fait les mêmes choix, alors que reproduire les définitions prouve que les paramètres ont été suivis.
Chaque algorithme dont la largeur est un nombre entier d'octets publie en outre un résidu, seconde constante indépendante décrivant ce que contient le registre après lecture d'un message valide suivi de sa somme. Ils sont reproduits eux aussi, si bien que la plupart des entrées sont vérifiées deux fois par des propriétés différentes. Il existe également un contrôle négatif : un jeu de paramètres délibérément corrompu doit échouer à sa valeur de contrôle, sans quoi toute la comparaison passerait aussi pour un moteur qui se contenterait de renvoyer la réponse attendue.
Une colonne du catalogue mérite d'être conservée et disparaît généralement quand on recopie les tables. Chaque entrée est marquée attested, confirmed, academic ou third-party, ce qui indique à quel point les six paramètres ont été vérifiés face à une implémentation en fonctionnement — et non la qualité de l'algorithme. Attested signifie que quelqu'un les a confrontés à une sortie réelle ; academic, qu'ils proviennent d'un article ou d'une norme sans implémentation disponible. Soixante des 113 sont attested et trente-huit academic : un bon tiers du catalogue est donc constitué de paramètres que personne n'a confirmés face à du code en exécution.
Deux limites assumées. Un CRC est conçu contre la corruption accidentelle et n'offre aucune protection contre une altération délibérée : qui peut modifier vos données peut recalculer la somme, un CRC n'est donc jamais une mesure de sécurité. Et le calcul procède ici bit à bit, par clarté et pour gérer les largeurs inhabituelles ; c'est parfait pour tout ce que vous colleriez dans une zone de texte, mais ce n'est pas ainsi qu'on calcule la somme d'un gigaoctet.
Pourquoi est-ce gratuit ?
Tout tourne dans votre navigateur. Décaler un registre n'est pas un travail qui réclame un serveur : il n'y a donc rien à payer ni de compte à créer.
Rien de ce que vous collez n'est envoyé, conservé ni journalisé. Les données dont vous calculez la somme sont le plus souvent une trame ou un fichier issus d'un vrai système, et la façon fiable de garder cela privé est de ne jamais le recevoir.