FreeToGenerate.com

113 algorithmes catalogués, chacun vérifié face à sa propre valeur de contrôle publiée. Rien n'est envoyé.

Par défaut, c'est la chaîne de test du catalogue lui-même : chaque résultat ci-dessous est donc une valeur que vous pouvez vérifier vous-même dans la table publiée.

Résultat

0xcbf43926

Cela correspond à la valeur de contrôle que le catalogue publie pour cet algorithme.

Paramètres

largeur
32
polynôme
0x04c11db7
valeur initiale
0xffffffff
réfléchir l'entrée
oui
réfléchir la sortie
oui
XOR final
0xffffffff
classe
attested

également appelé CRC-32

Même polynôme, résultats différents

Tous ces algorithmes emploient le polynôme ci-dessus. Ils ne diffèrent que par le registre initial, les indicateurs de réflexion et le XOR final — et voici ce que chacun renvoie pour votre entrée.

CRC-32/BZIP20xfc891918
CRC-32/CKSUM0x765e7680
CRC-32/ISO-HDLC0xcbf43926
CRC-32/JAMCRC0x340bc6d9
CRC-32/MPEG-20x0376e6e7

C'est pourquoi une somme étiquetée seulement CRC-32 ne suffit pas. Le catalogue enregistre ce nom seul comme alias d'ISO-HDLC, celui qu'emploient zip, gzip et PNG, mais une spécification ou un ticket de support indiquant CRC-32 peut désigner n'importe lequel de ces cinq. Rien dans la valeur n'indique lequel l'a produite : si deux systèmes divergent d'une constante, c'est la première piste à écarter.

Le catalogue

algorithmes en usage
113
dont en 32 bits
12
partagent un polynôme
5

Comment cela est vérifié

Chaque entrée du catalogue publie une valeur de contrôle : le résultat de l'algorithme appliqué à la chaîne 123456789. Les données de référence constituent donc leur propre suite de tests, et ce moteur est vérifié en reproduisant les 113 valeurs publiées plutôt qu'en s'accordant avec la bibliothèque d'un tiers. Chaque algorithme dont la largeur est un multiple de huit publie en outre un résidu, seconde constante indépendante, reproduite elle aussi.

Le catalogue consigne également le degré de vérification de chaque jeu de paramètres, et cette colonne mérite d'être conservée. Attested signifie que les valeurs ont été confirmées face à une implémentation en fonctionnement ; academic, qu'elles proviennent d'un article ou d'une norme sans implémentation ; third-party, que la confirmation vient d'un tiers. Cela ne dit rien de la qualité de l'algorithme, seulement de la confiance accordée aux six nombres.

Paramètres issus du Catalogue of Parametrised CRC Algorithms (CRC RevEng). Rien n'est envoyé : le calcul se fait dans cet onglet.

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

  1. 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.
  2. 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.
  3. 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.