Pythonを使用した暗号化-シーザー暗号
前の章では、逆暗号について説明しました。この章では、シーザー暗号について詳しく説明します。
シーザー暗号のアルゴリズム
シーザー暗号のアルゴリズムは、次の機能を備えています。
シーザー暗号技術は、暗号化技術のシンプルで簡単な方法です。
単純な換字式暗号です。
平文の各文字は、アルファベットで下に固定数の位置がある文字に置き換えられます。
次の図は、シーザー暗号アルゴリズムの実装の動作を示しています。
シーザー暗号アルゴリズムのプログラム実装は次のとおりです。
def encrypt(text,s):
result = ""
# transverse the plain text
for i in range(len(text)):
char = text[i]
# Encrypt uppercase characters in plain text
if (char.isupper()):
result += chr((ord(char) + s-65) % 26 + 65)
# Encrypt lowercase characters in plain text
else:
result += chr((ord(char) + s - 97) % 26 + 97)
return result
#check the above function
text = "CEASER CIPHER DEMO"
s = 4
print "Plain Text : " + text
print "Shift pattern : " + str(s)
print "Cipher: " + encrypt(text,s)
出力
次の画像に示すように、出力であるシーザー暗号を確認できます。
説明
プレーンテキスト文字は、一度に1つずつトラバースされます。
指定された平文の各文字について、テキストの暗号化と復号化の手順に応じて、ルールに従って指定された文字を変換します。
手順が実行された後、暗号文と呼ばれる新しい文字列が生成されます。
シーザー暗号アルゴリズムのハッキング
暗号文はさまざまな可能性でハッキングされる可能性があります。そのような可能性の1つはBrute Force Technique,これには、考えられるすべての復号化キーを試すことが含まれます。この手法はそれほど労力を必要とせず、ハッカーにとっては比較的簡単です。
シーザー暗号アルゴリズムをハッキングするためのプログラムの実装は次のとおりです。
message = 'GIEWIVrGMTLIVrHIQS' #encrypted message
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for key in range(len(LETTERS)):
translated = ''
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol)
num = num - key
if num < 0:
num = num + len(LETTERS)
translated = translated + LETTERS[num]
else:
translated = translated + symbol
print('Hacking key #%s: %s' % (key, translated))
前の例で暗号化された暗号文について考えてみます。次に、キーを使用し、ブルートフォース攻撃手法を使用して可能なハッキング方法を使用した出力は次のとおりです。