Disons que vous avez deux hachages H(A)
et H(B)
et vous voulez les combiner. J'ai lu qu'une bonne façon de combiner deux hachages est de XOR
les, par exemple XOR( H(A), H(B) )
.
La meilleure explication que j'ai trouvée est abordée brièvement ici sur ces pages directives sur les fonctions de hachage :
L'association XOR de deux nombres dont la distribution est à peu près aléatoire donne un autre nombre dont la distribution est encore à peu près aléatoire*, mais qui dépend maintenant des deux valeurs.
...
* A chaque bit des deux nombres à combiner, un 0 est émis si les deux bits sont égaux, sinon un 1. En d'autres termes, dans 50% des combinaisons, un 1 sera émis. Ainsi, si les deux bits d'entrée ont chacun une chance sur deux d'être 0 ou 1, il en sera de même pour le bit de sortie.
Pouvez-vous expliquer l'intuition et/ou les mathématiques derrière la raison pour laquelle XOR devrait être l'opération par défaut pour combiner les fonctions de hachage (plutôt que OR ou AND, etc.) ?