シフト暗号とは、平文をアルファベットの文字を一定数シフトさせることで暗号化する手法です。Pythonを使用してシフト暗号を実装する方法を説明します。

1. シフト関数を定義する

まず、シフト関数を定義します。この関数は、平文とシフト数を引数として受け取り、暗号文を返します。

def shift(plain_text, shift_num):
    cipher_text = ""
    for char in plain_text:
        if char.isalpha():
            char_code = ord(char)
            if char.isupper():
                char_code = (char_code - 65 + shift_num) % 26 + 65
            else:
                char_code = (char_code - 97 + shift_num) % 26 + 97
            cipher_text += chr(char_code)
        else:
            cipher_text += char
    return cipher_text

2. シフト関数をテストする

次に、シフト関数をテストします。

print(shift("Hello, World!", 3)) # "Khoor, Zruog!"

このコードを実行すると、“Hello, World!“がシフト数3で暗号化され、“Khoor, Zruog!“が出力されます。

3. 逆シフト関数を定義する

逆シフト関数を定義することで、暗号文を復号化できます。

def reverse_shift(cipher_text, shift_num):
    plain_text = ""
    for char in cipher_text:
        if char.isalpha():
            char_code = ord(char)
            if char.isupper():
                char_code = (char_code - 65 - shift_num) % 26 + 65
            else:
                char_code = (char_code - 97 - shift_num) % 26 + 97
            plain_text += chr(char_code)
        else:
            plain_text += char
    return plain_text

4. 逆シフト関数をテストする

最後に、逆シフト関数をテストします。

print(reverse_shift("Khoor, Zruog!", 3)) # "Hello, World!"

このコードを実行すると、“Khoor, Zruog!“がシフト数3で復号化され、“Hello, World!“が出力されます。