web-dev-qa-db-fra.com

CRC32 vs CRC32C?

Quelle est la différence entre CRC32 et CRC32C? Je connais CRC32 depuis longtemps, mais je viens d'entendre CRC32C aujourd'hui. S'agit-il essentiellement de la même méthode (c'est-à-dire que les deux résultats donnent le même hachage pour des données données)?

28
Wirawan Purwanto

Le CRC32 trouvé dans Zip et beaucoup d'autres endroits utilise le polynôme 0x04C11DB7; sa forme inversée 0xEDB88320 est peut-être mieux connue, étant souvent trouvée dans les implémentations peu endiennes.

CRC32C utilise un polynôme différent (0x1EDC6F41, inversé 0x82F63B78) mais sinon le calcul est le même. Les résultats sont naturellement différents. Ceci est également connu sous le nom de Castagnoli CRC32 et se trouve le plus clairement dans les nouveaux processeurs Intel qui peuvent calculer une étape CRC 32 bits complète en 3 cycles. C'est la raison pour laquelle le CRC32C devient de plus en plus populaire, car il permet des implémentations avancées qui traitent efficacement un mot 32 bits par cycle malgré la latence de trois cycles (en traitant 3 flux de données en parallèle et en utilisant l'algèbre linéaire pour combiner les résultats ).

35
DarthGizka