Calcul de CRC en python

Fermé
liline - 16 juil. 2009 à 17:33
 liline - 20 juil. 2009 à 10:11
Bonjour,

je recupere une longue trame d'une application de longueur variable
j'en sors les champs correspondants aux CRC, il y en a deux
le 1er equivaut a 1821 en hexa
le 2eme equivant a 33FD en hexa

je dois calculer la valeur du CRC sachant que le polynome CRC est :
x^16+x^13+x^12+x^11+x^10+x^8+x^6+x^5+x^2+1

j'ai fais des recherches sur google mais je n'ai pas compris comment se faisait le calcul

merci pour votre aide

4 réponses

KX Messages postés 16736 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mai 2024 3 015
16 juil. 2009 à 19:41
Je ne connais pas le python mais pour t'expliquer le CRC j'en n'ai pas besoin

Tout d'abord il faut mettre tes valeurs en binaires pour 1821 ce sera 1100000100001
Ensuite tu as un polynôme il faut lui aussi l'écrire en binaire, en fait on ne garde que les coefficients, ici c'est 10011110101100101

Le principe du CRC c'est d'obtenir une "clé" de vérification, cette clé sera de taille 16 car ton polynôme est de degré 16, on va poser une division entre ton message (1821) suivi de 16 zéros et du polynôme

11000001000010000000000000000 / 10011110101100101

Ici on ne s'intéresse qu'au reste donc on ne va pas faire véritablement une division comme on l'entend d'habitude on va juste applique un XOR (ou exclusif) entre les nombres, le mieux est de les mettre l'un sous l'autre :

11000001000010000000000000000
10011110101100101
----------------------------------------------------
01011111101110101000000000000

On va réitérer l'opération autant de fois qu'il restera des nombres à gauche (ce qui n'est pas en gras).
Au final le CRC sera la valeur en gras.

Pour vérifier un CRC, au lieu de mettre 16 zéros (en gras) on met le CRC et en faisant le même calcul tu dois obtenir 16 zéros au final
0
KX Messages postés 16736 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mai 2024 3 015
16 juil. 2009 à 19:45
Voir aussi : Le contrôle des erreurs
0
merci pour ces informations, je devrai arriver à me debrouiller.
0
resolu
0