つけじょにーのすぱげていコード

主に、競技プログラミング、セキュリティのお勉強の際に書いたすぱげていコードを書き込みます

XORの性質

XOR (排他的論理和)は面白い性質を持っているんです。
具体的になんだというと、例えば平文123があるとします。

int plain = 123;

これに対し、12という鍵を使って暗号化(XOR)します

int key = 12;
int cipher = plain ^ key;

そして、再度同じ鍵を使って複合化(XOR)します

int re_plain = cipher ^ key;

するとびっくり、平文と同じになります。
このように、XORを使う場合、平文は可逆の性質(用語ではない。自分の適当な造語です)を持ちます。