解説
シーザー暗号は、各文字を決まった数だけ後ろにずらす暗号です。たとえば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 なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。