0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

この記事の目的は、Caesar Cipher(シーザー暗号)をどのようにPythonを使って書くかを説明したい。暗号理論上、もっともシンプルで、広く知られた暗号の一つである。決まった文字数分のアルファベットをシフトして暗号化を行う。

まず、alphabet全26文字をリストにする。

Screenshot 2024-06-10 at 16.27.05.png

次に、関数を定義する。

Screenshot 2024-06-10 at 16.28.53.png

start_text: 暗号化または復号化したいテキスト。
shift_amount: シフトする量。
cipher_direction: "encode"(暗号化)または "decode"(復号化)を指定する文字列。

初期化

Screenshot 2024-06-10 at 16.30.09.png
結果の文字列を格納するための変数、"endtext"を空文字で初期化します。

シフト方向の調整

Screenshot 2024-06-10 at 16.30.42.png

cipher_direction が "decode" の場合、シフト量を負の値にします。これにより、文字が逆方向にシフトされて復号化されます。

文字の処理

Screenshot 2024-06-10 at 16.31.56.png

start_text 内の各文字 char を順に処理します。
文字が alphabet に含まれている場合、その文字の位置を取得し、シフト量を加算(または減算)した新しい位置の文字を end_text に追加します。
文字が alphabet に含まれていない場合、そのまま end_text に追加します。
alphabet は事前に定義されているアルファベットのリストである必要があります。

結果の表示

Screenshot 2024-06-10 at 16.32.53.png

暗号化または、複合化の結果を表示します。

ロゴの表示

Screenshot 2024-06-10 at 16.33.44.png

art モジュールから logo をインポートし、表示します。この部分はシーザー暗号の動作には直接関係ありませんが、プログラムの見た目を良くするために追加されています。

以下が、"alphabet"を含んだ完全なコード例です。
Screenshot 2024-06-10 at 16.35.00.png

以上の画像のコードを使ったら、以下の画像が表示されます。

Screenshot 2024-06-10 at 16.35.25.png

今回は、japanを入力し、3文字ずつ"encode”して、文字列を移そう。この場合、mdsdqがresultとして表示された。つまり、encodeは、各文字列をユーザが指定した文字の数だけアルファベットを一定の法則に基づいて変換することになる。

Screenshot 2024-06-10 at 16.38.06.png

次に、hanshinと入力し、5文字ずつ"decode"して、文字列を移そう。この場合、cvincdiがresultとして表示された。つまり、decodeは、各文字列をユーザが指定した文字の数だけアルファベットを一定の法則に基づいて変換することになる。
Screenshot 2024-06-10 at 16.41.27.png

Screenshot 2024-06-10 at 16.42.56.png
そして、今回はnoと選択したので、このプログラムは終了した。皆さんもこのプログラムコードを参考にしながら、シーザー暗号を生成したらいかがでしょうか。

以下の記事を参考にして、この記事を書くためのプログラムコードを作成しました。
https://medium.com/paul-zhao-projects/python-100-projects-in-100-days-learning-journal-979d9500c868

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?