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

C Discussion :

Mauvais résultat aprés un XOR sur un tableau de données


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut Mauvais résultat aprés un XOR sur un tableau de données
    Bonjour à tous ,


    j'ai crée une fonction qui fait un xor sur 02 blocks de données , mais le résultat est complétement faux .

    12 50 F8 21 82 6B 2F 82 XOR 77 CA 7B AA DC 46 2C AE

    Le résultat doit étre = 659A838B5E2D032C
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     int xor_donnees (unsigned char *block_A, unsigned char block_B, int Taille )
    {   
     /// Taile: 8 bytes , 16 ou 32 
     
       switch(Taille) {
            case 16:
       *((unsigned int *)block_A+3) ^ *((unsigned int *)block_B+3);
       *((unsigned int *)block_A+2) ^ *((unsigned int *)block_B+2);
        case 8:       
       *((unsigned int *)block_A+1) ^ *((unsigned int *)block_B+1);
        case 4:
        *((unsigned int *)block_A+0) ^ *((unsigned int *)block_B+0);
          break;
        default:
          while(Taille--) 
          *block_A++ ^  *block_B++;
          break;
        }
     
     
     
    }    
     
     
     
    int main()
    {
     
    unsigned char  block_a[8]={0x12, 0x50, 0xF8, 0x21, 0x82, 0x6B, 0x2F, 0x82};
    unsigned char block_b[8] ={0x77, 0xCA, 0x7B, 0xAA, 0xDC, 0x46, 0x2C, 0xAE}; 
     
    // appelle de la fonction xor_données 
     
    xor_donnees( block_a,block_b,8);
     
     
     
    }

    le résultat affiché est 97 09 69 54 A3 42 0F 09
    le bon résultat est 65 9A 83 8B 5E 2D 03 2C



    Merci pour tout conseil .

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    il faudrait des parenthèses autour (block_x +x)
    c'est quoi ces histoires de taille ??
    à quoi te sert ton Taille-- ??

    de plus je remarque que block_a est un pointeur alors que block_b ne l'est pas.

    et tu ne stocke nul par ton résultat ??
    __________
    "Any sufficiently advanced technology is indistinguishable from magic" Arthur C. Clarke

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par kamouminator Voir le message
    c'est quoi ces histoires de taille ??
    à quoi te sert ton Taille-- ??



    salut ,

    c'est quoi ces histoires de taille ??
    Taille : 8 bytes , 16 bytes , 32 bytes , 64 bytes .

    à quoi te sert ton Taille-- ??

    659A838B5E2D032C = 8 bytes hex hexadecimal
    EED65D08FADEA1E904300B589CEE9EFE = 16 bytes hexadecimal

  4. #4
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    ok, je viens de comprendre ton raisonnement. (oublie mon histoire de parentheses)
    je dirait que cela pourrait venir de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int xor_donnees (unsigned char *block_A, unsigned char block_B, int Taille )
    qui devrait plutot etre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int xor_donnees (unsigned char *block_A, unsigned char *block_B, int Taille )
    et que tu ne stocke nul par ton résultat !
    __________
    "Any sufficiently advanced technology is indistinguishable from magic" Arthur C. Clarke

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    re , méme avec le code que tu as proposé , le résultat est faux .

  6. #6
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    donne nous un code qui compile pour qu'on puisse t'aider.
    __________
    "Any sufficiently advanced technology is indistinguishable from magic" Arthur C. Clarke

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par kamouminator Voir le message
    donne nous un code qui compile pour qu'on puisse t'aider.
    Salut ,

    Merci pour ton aimabilité et ta disponibilité , je viens à l'instant de trouver et cérner le probléme , maintenant j'ai le bon résultat aprés un xor sur les deux chaines ( 2 * 8 ).
    Bonne soirée .

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

Discussions similaires

  1. Mauvais résultat après calcul de 2 nombres
    Par keusty78 dans le forum Débuter
    Réponses: 17
    Dernier message: 08/10/2010, 19h02
  2. Réponses: 15
    Dernier message: 11/05/2007, 15h28
  3. Réponses: 11
    Dernier message: 11/08/2006, 16h52
  4. Réponses: 7
    Dernier message: 15/12/2005, 14h24
  5. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12

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