この記事の目的は、Caesar Cipher(シーザー暗号)をどのようにPythonを使って書くかを説明したい。暗号理論上、もっともシンプルで、広く知られた暗号の一つである。決まった文字数分のアルファベットをシフトして暗号化を行う。
まず、alphabet全26文字をリストにする。
次に、関数を定義する。
start_text: 暗号化または復号化したいテキスト。
shift_amount: シフトする量。
cipher_direction: "encode"(暗号化)または "decode"(復号化)を指定する文字列。
初期化

結果の文字列を格納するための変数、"endtext"を空文字で初期化します。
シフト方向の調整
cipher_direction が "decode" の場合、シフト量を負の値にします。これにより、文字が逆方向にシフトされて復号化されます。
文字の処理
start_text 内の各文字 char を順に処理します。
文字が alphabet に含まれている場合、その文字の位置を取得し、シフト量を加算(または減算)した新しい位置の文字を end_text に追加します。
文字が alphabet に含まれていない場合、そのまま end_text に追加します。
alphabet は事前に定義されているアルファベットのリストである必要があります。
結果の表示
暗号化または、複合化の結果を表示します。
ロゴの表示
art モジュールから logo をインポートし、表示します。この部分はシーザー暗号の動作には直接関係ありませんが、プログラムの見た目を良くするために追加されています。
以上の画像のコードを使ったら、以下の画像が表示されます。
今回は、japanを入力し、3文字ずつ"encode”して、文字列を移そう。この場合、mdsdqがresultとして表示された。つまり、encodeは、各文字列をユーザが指定した文字の数だけアルファベットを一定の法則に基づいて変換することになる。
次に、hanshinと入力し、5文字ずつ"decode"して、文字列を移そう。この場合、cvincdiがresultとして表示された。つまり、decodeは、各文字列をユーザが指定した文字の数だけアルファベットを一定の法則に基づいて変換することになる。


そして、今回はnoと選択したので、このプログラムは終了した。皆さんもこのプログラムコードを参考にしながら、シーザー暗号を生成したらいかがでしょうか。
以下の記事を参考にして、この記事を書くためのプログラムコードを作成しました。
https://medium.com/paul-zhao-projects/python-100-projects-in-100-days-learning-journal-979d9500c868








