見出し画像

プログラミング初心者がPythonを用いシーザー暗号で文章を暗号化するプログラムを作成してみた

どうも、NekoShadowです。
今回はプログラミング初心者の僕がPythonを用いシーザー暗号で文章を暗号化するプログラムを作成してみたのでそれを公開してみようと思います。
なぜそんなものを作成したかというと、Pythonの基礎中の基礎を学習したので何か作ってみたいなと思っていました。
そんなある日、youtubeを見ていると、コンピューターサイエンス入門のYoutubeチャンネルがあるという情報があり、少し気になり見てみました。そこでRubyでシーザー暗号で文章を暗号化するプログラムを作成しており、これだ!と思ったからです。
このような理由のため、僕はこのYoutubeチャンネルの動画を参考にして作りました。
下記はそのコンピューターサイエンス入門のYoutubeチャンネルです。

勉強になったので興味があれば見てみてください。
さて、下記がぼくの書いたコードです。

def enc(k, m):
    # 暗号化関数を定義

    ascii_m = []
    for one_m in list(m):
        ascii_m.append(ord(one_m))
    # 入力文字列の各文字をASCIIコードに変換し、ascii_mリストに格納

    length = len(m)
    changed_ascii_m = [0] * length
    # 変更後のASCIIコードを格納するリストを平文の文字数分の0で埋める

    code_a = 97
    # 'a'のASCIIコード
   
    cryptogram = []
    # 暗号化された文字列を格納するリスト
    t=0    
    while t < length:
        sa = ascii_m[t] - code_a
        if 0 <= sa <= 25:
            sa = (sa + k) % 26
            changed_ascii_m[t] = sa + code_a
        # 各文字のASCIIコードをシフトし、'a'から'z'の範囲に収まるように変換

        cryptogram.append(chr(changed_ascii_m[t]))
        # 変換後のASCIIコードを文字に変換し、cryputoguraumリストに追加

        t += 1

    return cryptogram
    # 暗号化された文字列のリストを返す

m = input('暗号化したい文章を入力してください:')
# 暗号化する文字列を入力

k = int(input('文字をいくつ右にずらすか入力してください:'))
# シフト数を入力

for x in enc(k, m):
    print(x, end='')
    # 暗号化された文字列を出力

※このコードは小文字の英字のみを暗号化の対象としています。また、kには整数を入れないとエラーが起きます。
最近、このプログラムを作成したのがきっかけなのか分かりませんが、暗号について非常に興味があるので今後いろんな暗号を紹介していくかもしれま
せん。

短いですが今回の記事はここで終わります!
良かったらフォロー•いいねよろしくお願いします!!



この記事が気に入ったらサポートをしてみませんか?