Fonction XOR (ou fonction « OU exclusif »)

La fonction XOR est un opérateur logique noté ⊕ qui associe 2 booléens (variable à deux états, « vrai » ou « faux »; 1 ou 0) à la valeur « vrai » (1) seulement si les deux booléens sont différents. Nous pouvons définir cette fonction à l’aide de sa table de vérité :

Table de vérité de XOR
A B A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0

Nous pouvons effectuer la fonction XOR sur de l’hexadécimal, pour cela il nous suffit de convertir le nombre hexadécimal en nombre binaire puis d’effectuer le XOR sur chacun des bits obtenus et de reconvertir en hexadécimal.

0xA0 ⊕ 0xB0 = 0b10100000 ⊕ 0b10110000
= 0b00010000 = 0x10

Nous pouvons également utiliser une table et comparer caractère hexadécimal par caractère hexadécimal :

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 1 0 3 2 5 4 7 6 9 8 B A D C F E
2 2 3 0 1 6 7 4 5 A B 8 9 E F C D
3 3 2 1 0 7 6 5 4 B A 9 8 F E D C
4 4 5 6 7 0 1 2 3 C D E F 8 9 A B
5 5 4 7 6 1 0 3 2 D C F E 9 8 B A
6 6 7 4 5 2 3 0 1 E F C D A B 8 9
7 7 6 5 4 3 2 1 0 F E D C B A 9 8
8 8 9 A B C D E F 0 1 2 3 4 5 6 7
9 9 8 B A D C F E 1 0 3 2 5 4 7 6
A A B 8 9 E F C D 2 3 0 1 6 7 4 5
B B A 9 8 F E D C 3 2 1 0 7 6 5 4
C C D E F 8 9 A B 4 5 6 7 0 1 2 3
D D C F E 9 8 B A 5 4 7 6 1 0 3 2
E E F C D A B 8 9 6 7 4 5 2 3 0 1
F F E D C B A 9 8 7 6 5 4 3 2 1 0

Nous savons que, pour A et B correspondant à 2 nombres :
A ⊕ A = 0
A ⊕ 0 = A | Unifère
A ⊕ B = B ⊕ A | Commutatif
A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C | Associativité
(A ⊕ B) ⊕ B = A ; car (A ⊕ B) ⊕ B = A ⊕ B ⊕ B = A ⊕ 0 = A

Cette dernière propriété nous sera très utile en cryptographie car elle permet en connaissant un des 2 nombres du XOR (par exemple la clé) de retrouver le message de départ. En effet on transmettra le message chiffré (m ⊕ c) et le récepteur retrouvera m en faisant (m ⊕ c) ⊕ c.

Cependant cette propriété oblige le cryptographe à changer souvent de clé car si un cryptanalyste parvient à connaître un message chiffré et son équivalent non-chiffré, il pourra retrouver la clé.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.