広告スペース(バナー)
🐍Python レッスン
基本文法の基礎8
データ構造とオブジェクト指向8
構文の基本を深める9
関数とデータ構造の応用9
アルゴリズムとテストの基礎8
文字列・数値操作の応用8
実務で役立つ機能8
アルゴリズム練習問題10
レッスン 35 / 69

シーザー暗号を作ってみよう(文字のシフト暗号)

このレッスンでは、シーザー暗号という古典的な暗号を実装しながら、文字コードを使った文字列操作の練習をすることを目標にします。「Python 暗号化 実装」「文字コード ord chr」で調べている方向けです。

シーザー暗号は、アルファベットを決まった数だけずらして別の文字に置き換える、古代ローマ発祥のシンプルな暗号です。「50音を3つずつずらして話す暗号ごっこ」のようなイメージです。ord()で文字を数値(文字コード)に変換し、計算してからまたchr()で文字に戻す、という流れで実装します。

サンプルコードでは、.isalpha()で英字かどうかを判定し、英字の場合だけ文字コードをずらす計算を行っています。% 26で26文字の範囲に収める計算がポイントで、Zの次にAへ戻るような「ぐるっと一周する」計算を実現しています。英字以外(スペースや記号)はそのまま出力するよう工夫されています。

現代の暗号技術に比べると単純で解読も容易ですが、文字コードの計算というプログラミングの基本操作を練習するのにちょうどよい入門的な題材です。初心者がつまずきやすいのは、大文字と小文字で基準となる文字コードが異なる点で、両方に対応させるには少し工夫が必要になります。

現代の暗号技術の入り口として、仕組みそのものを手を動かして体験してみましょう。「文字を数値として扱い計算する」という発想は、より高度な暗号技術を学ぶ土台にもなります。

Python
OUTPUT / 実行結果

💡 初回実行時はPythonエンジンの読み込みに数秒かかります。

🎯
ここまでできればゴール達成!
簡単な暗号化・復号化ができる、シーザー暗号ツールが作れるようになります。
広告スペース(バナー)
広告スペース(記事内)