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:
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 .