#63

シーザー暗号:文字をずらす

アルファベットを一定数ずらして暗号化・復号する古典暗号を体験します。

解説

シーザー暗号は、各文字を決まった数だけ後ろにずらす暗号です。たとえば3ずらすと A→D、B→E になります。復号は同じ数だけ逆向きにずらすだけ。% 26 で「Zの次はAに戻る」循環を表現しているのがポイントです。 鍵(ずらす数)は1〜25の25通りしかないため、総当たりで簡単に破れます。暗号の「鍵空間の広さ」がなぜ重要かを考えるきっかけにしましょう。

書き方

ord(文字) — 文字を文字コード(整数)に、chr(整数) — 整数を文字に変換。
・文字列.isalpha(): 英字かどうかを True/False で判定。
・(ord(ch) - base + s) % 26 + base: % 26 でZの次をAに戻す循環。
・def 関数名(引数): で暗号化関数を定義し、復号は -shift で呼ぶ。

書いて動かす

この回の課題

各文字を3つ後ろにずらして暗号化し、同じ数だけ逆にずらして復号する関数を作ってみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

もっと本格的に使うなら

Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。