IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Comprendre l' Algorithme Checksum .


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut Comprendre l' Algorithme Checksum .
    Bonjour à tous et à toutes ,


    Pour permettre aux gens de comprendre cet algorythme je vais utiliser 1 exemple de calcul d'un checksum dont je cherche a comprendre comment la chaine de caractére est calculés pour génerer et calculer le checksum dans un fichier binaire .



    Checksum actuel : 1A A3 56 E2 54 81 2D C4
    Checksum calculer : 2A C2 76 FE 54 F4 F9 14

    Sur différent sites voici l'algo qui est utilisé pour calculer ce checksum , mais le résultat est différent

    x64 + x4 + x3 + x1 + 1



    Merci pour tout conseil ou suggéstions pourras calculer le bon checksum .

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Il y a tutoriel sur le calcul de CRC dispo ici meme:

    http://dvsoft.developpez.com/Articles/CRC
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Bonjour ,


    Merci beaucoup , mais j'ai déja esayer de coder en se basant sur le lien que tu m'as donner mais le résultat c'est un CRC checksum !!!

    Mon checksum c'est un XOR checksum qui est différent de la FAQ cité sur le site developpez.net .

    Le résultat du checksum est différent vu que la chaine est de 8 OCTETS .

    Mon but est de comprendre cet algo en se basant du un checksum genérer .

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Le résultat du checksum est différent vu que la chaine est de 8 OCTETS .
    Mon but est de comprendre cet algo en se basant du un checksum genérer .
    Oui, toi tu as un CRC-64 (64 bits = 8octets de 8 bits). Pour autant l'algoritme reste le meme. Dans le tutoriel (chapitre 7) ils utilisent un CRC-16, donc ils ont pris un "remainder" de 16bits. Toi tu dois prendre un remainder de 64bits.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui, toi tu as un CRC-64 (64 bits = 8octets de 8 bits).prends un remainder de 64bits.


    Exact , t'est le seul a trouver ça , j'ai poster sur différents forum , mais personne n'as remaruqé que y'avais sur la chaine 8 Data Bits .

    Merci à toi , mais j'ai déja utilisé un algorythme 64 Bits , mais le checksum génerer est différent .

    ReHash génere ce checksum : 0xCD D4 38 3D A1 82 1A 15 .
    VisualHash CRC 64 Bits checksum : 7D F4 68 50 99 18 A2 75 .
    Avec le logiciel CRC64.exe checksum genérer : C5 72 ED 28 FF AD D4 BB



    3 Checksum différent avec le méme fichier utilisé en utilisant 3 logiciels différents pour calculer un checksum 64 Bits .


    Faut t'il changer la maniére dont les Bits sont XOrés ?
    Commençer a faire un Bit Shifted Ou un Bit Oriented ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
     
    * Computes the CRC64 of the buffer of the given length using the
    * ( slow ) bit - oriented approach
    */
     int crc64_bitoriented ( unsigned char * buffer , int length ) {
    int i, j;
    uint64 crcreg = INITXOR ;
    for (j = 0; j < length ; ++j) {
    10 unsigned char b = buffer [j];
    for (i = 0; i < 8; ++i) {
    if (( crcreg ^ b) & 1) {
    crcreg = ( crcreg >> 1) ^ CRC;
    } else {
     crcreg >>= 1;
    }
    b >>= 1;
    }
    }
     
    return crc ^ FINALXOR ;
    }

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Exact , t'est le seul a trouver ça , j'ai poster sur différents forum , mais personne n'as remaruqé que y'avais sur la chaine 8 Data Bits .
    oui, je suis tres observateur.

    Merci à toi , mais j'ai déja utilisé un algorythme 64 Bits , mais le checksum génerer est différent .
    Sans doute qu'ils n'utilisent pas le meme polynome générateur. C'est louche.
    Test tes logiciels avec une chaine texte dont le crc64 est connu:

    CRC64("123456789") = 0x46A5A9388A5BEFFE

    Quand a ton code, ca me parrait louche vu qu'il utilise un "uint32" pour faire du 64 bits.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comprendre les étapes de l'algorithme SIFT
    Par looclooc dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 08/12/2011, 15h54
  2. comprendre l'algorithme EM(Expectation-Maximisation)
    Par Marisend dans le forum Mathématiques
    Réponses: 2
    Dernier message: 04/06/2010, 22h23
  3. Comprendre comment le checksum est calculé
    Par Fred.77 dans le forum C
    Réponses: 4
    Dernier message: 27/10/2007, 13h58
  4. Recherche d'un algorithme pour calculer un Checksum
    Par noune40 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2006, 10h46
  5. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo