Soit A, B, C tel que A XOR B = C
. La fonction inversive de XOR est également un XOR => A XOR C = B
. Autrement dit, si on a
c (le message chiffré) et A (la clef), appliquer XOR permet de retrouver B (le message en clair). Problème nous n'avons pas la clef.
En revanche, nous savons qu'elle consiste en une répétition d'une chaine de 4 bytes
key = os.urandom(4) * 20
et nous connaissons les 4 premiers caractères du message en clair: FCSC
. La solution consiste alors à chercher une
combinaison de bytes tels que <combinaison_de_bytes> XOR <debut_du message_chiffre> = FCSC
. La répétition 20 de
cette combinaison est notre key
. L'utiliser pour déchiffrer le message.