解説
XOR(排他的論理和)には「同じ値で2回XORすると元に戻る」という性質があります。つまり A XOR 鍵 = 暗号文、暗号文 XOR 鍵 = A となり、暗号化と復号にまったく同じ操作が使えます。
Pythonでは ^ がXOR演算子です。各文字を数値コードに直して鍵とXORするだけで暗号化できます。
実用の暗号でもXORは基本部品ですが、鍵が短く使い回されると破られるため、鍵の管理が決定的に重要です。
書き方
^ — XOR(排他的論理和)演算子。同じ値で2回XORすると元に戻る。 ・ord(文字)/chr(コード): 文字⇄文字コードの変換。 ・[ord(ch) ^ k for ch in text]: 各文字を鍵とXORするリスト内包表記。 ・"".join(...): 文字のリストを文字列に連結。
書いて動かす
この回の課題
同じ鍵で文字列をXOR暗号化し、もう一度同じ鍵をかけて復号できることを確かめてみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
自分のPCでも続けてみませんか
Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。