XOR (排他的論理和)は面白い性質を持っているんです。
具体的になんだというと、例えば平文123があるとします。
int plain = 123;
これに対し、12という鍵を使って暗号化(XOR)します
int key = 12;
int cipher = plain ^ key;
そして、再度同じ鍵を使って複合化(XOR)します
int re_plain = cipher ^ key;
するとびっくり、平文と同じになります。
このように、XORを使う場合、平文は可逆の性質(用語ではない。自分の適当な造語です)を持ちます。