#65

XOR暗号:同じ鍵で暗号化も復号も

ビット演算XORで、同じ鍵で暗号化と復号ができる仕組みを体験します。

解説

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本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。