シーザー暗号は、古代ローマ時代から使われていた暗号の一種で、単純な代替暗号の一種です。この記事では、Pythonを使ってシーザー暗号を実装する方法を紹介します。
シーザー暗号とは
シーザー暗号は、文字を一定の数だけずらすことで暗号化する方法です。たとえば、文字を3つずらすと、AはDに、BはEに、CはFになります。暗号化された文を受け取った人は、同じ数だけ文字を逆にずらすことで元の文に復元することができます。
シーザー暗号をPythonで実装する
以下のコードは、シーザー暗号を実装するPythonの関数です。この関数は、引数として暗号化したい文とずらしたい数を受け取り、暗号化された文を返します。
def caesar_cipher(text, shift):
cipher_text = ""
for char in text:
if char.isalpha():
char_code = ord(char)
char_code = (char_code - 65 + shift) % 26 + 65
cipher_text += chr(char_code)
else:
cipher_text += char
return cipher_text
この関数は、引数として渡された文の各文字を順番に取り出し、文字コードを計算して暗号化します。文字コードを計算する方法は、以下の通りです。
ord()関数を使って文字のUnicodeコードポイントを取得します。- 大文字のAのUnicodeコードポイントである65を引きます。
- ずらしたい数を加えます。
- 26で割った余りを取得します。
- 大文字のAのUnicodeコードポイントを再度加えます。
chr()関数を使って文字に変換します。
シーザー暗号を使ってみる
以下は、上記の関数を使って"HELLO"をシーザー暗号化した例です。ずらす数は3です。
cipher_text = caesar_cipher("HELLO", 3)
print(cipher_text)
出力結果は、“KHOOR"になります。
まとめ
この記事では、Pythonを使ってシーザー暗号を実装する方法を紹介しました。シーザー暗号は、古代ローマ時代から使われている古典的な暗号ですが、Pythonを使うことで簡単に実装することができます。