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 .